Re: [certid] What security does SRV-ID add when DNS-ID will always match?

Matt McCutchen <matt@mattmccutchen.net> Wed, 30 March 2011 20:15 UTC

Return-Path: <matt@mattmccutchen.net>
X-Original-To: certid@core3.amsl.com
Delivered-To: certid@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 803B83A6A2A for <certid@core3.amsl.com>; Wed, 30 Mar 2011 13:15:38 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.542
X-Spam-Level:
X-Spam-Status: No, score=-2.542 tagged_above=-999 required=5 tests=[AWL=0.057, BAYES_00=-2.599]
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 XudgrVWFbMdt for <certid@core3.amsl.com>; Wed, 30 Mar 2011 13:15:37 -0700 (PDT)
Received: from homiemail-a4.g.dreamhost.com (caiajhbdcbhh.dreamhost.com [208.97.132.177]) by core3.amsl.com (Postfix) with ESMTP id 180FB3A69AB for <certid@ietf.org>; Wed, 30 Mar 2011 13:15:37 -0700 (PDT)
Received: from homiemail-a4.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a4.g.dreamhost.com (Postfix) with ESMTP id 3C81151C08B; Wed, 30 Mar 2011 13:17:16 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; c=nofws; d=mattmccutchen.net; h=subject:from :to:cc:in-reply-to:references:content-type:date:message-id :mime-version:content-transfer-encoding; q=dns; s= mattmccutchen.net; b=BezcxS8g6ElfJ57v+ZUERO1uvrwf6HqpUgfWDnqxR+i 1ks+oU2SoOMttNpgVfNy5SORVxxySWcxiokeGQzQqnpiXTTGlowhgMf8d4BUnDpQ NzoVgOpk02AQeXR5Fo2FQ3p0fSI1FHTxxDyFVwMW9pPgxR1MJELdfRQuhFIvnGbI =
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=mattmccutchen.net; h= subject:from:to:cc:in-reply-to:references:content-type:date :message-id:mime-version:content-transfer-encoding; s= mattmccutchen.net; bh=kuilaM9MW2IJiJzOJg8RM7Gef8s=; b=fkCG1pj27G 0ZhPQgI2I76b/B5Xx5DqrWBoFC1w96Ez0iwV1cN/9mn8eKYY1PbNq3FuSAXOU6CT kP0WVnanHU3gpe6n3VWKmbyISI5zFNnIkXJAfu7uIPGlkedqiYEe4izQ24d+PshD 3Iha6L5qm0Uyus7ErxAsTj43G5jsZxeYw=
Received: from [129.2.249.209] (ml2.student.umd.edu [129.2.249.209]) (Authenticated sender: matt@mattmccutchen.net) by homiemail-a4.g.dreamhost.com (Postfix) with ESMTPA id BA4E751C085; Wed, 30 Mar 2011 13:17:15 -0700 (PDT)
From: Matt McCutchen <matt@mattmccutchen.net>
To: Peter Saint-Andre <stpeter@stpeter.im>
In-Reply-To: <4D9334DB.3040909@stpeter.im>
References: <4D35EFE7.4060209@KingsMountain.com> <1300568731.1916.34.camel@localhost> <4D9334DB.3040909@stpeter.im>
Content-Type: text/plain; charset="UTF-8"
Date: Wed, 30 Mar 2011 16:17:14 -0400
Message-ID: <1301516234.1917.27.camel@localhost>
Mime-Version: 1.0
X-Mailer: Evolution 2.32.3
Content-Transfer-Encoding: 7bit
Cc: IETF cert-based identity <certid@ietf.org>, =JeffH <Jeff.Hodges@KingsMountain.com>
Subject: Re: [certid] What security does SRV-ID add when DNS-ID will always match?
X-BeenThere: certid@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Representation and verification of identity in certificates <certid.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/certid>, <mailto:certid-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/certid>
List-Post: <mailto:certid@ietf.org>
List-Help: <mailto:certid-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/certid>, <mailto:certid-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 30 Mar 2011 20:15:38 -0000

On Wed, 2011-03-30 at 15:49 +0200, Peter Saint-Andre wrote:
> You're right. Jeff and I looked at this issue in detail and worked with
> our sponsoring AD (Alexey Melnikov) to address it during AUTH48. This
> was a bit challenging because we wanted to keep the changeset as small
> as possible. Although we considered more significant modifications, we
> ended up doing two things in Section 6.2.1 (which defines the rules for
> constructing a list of reference identifiers)...
> 
> 1. Changed MUST to SHOULD for DNS-ID:
> 
> ###
> 
>   Using the combination of fully qualified DNS domain name(s) and
>   application service type, the client constructs a list of reference
>   identifiers in accordance with the following rules:
> 
>   o  The list SHOULD include a DNS-ID.  A reference identifier of type
>      DNS-ID can be directly constructed from a fully qualified DNS
>      domain name that is (a) contained in or securely derived from the
>      inputs (i.e., the source domain), or (b) explicitly associated
>      with the source domain by means of user configuration (i.e., a
>      derived domain).
> 
> ###
> 
> 2. Added a paragraph clarifying the need for the change from MUST to SHOULD:
> 
> ###
> 
>      Which identifier types a client includes in its list of reference
>      identifiers is a matter of local policy.  For example, in certain
>      deployment environments, a client that is built to connect only to
>      a particular kind of service (e.g., only IM services) might be
>      configured to accept as valid only certificates that include an
>      SRV-ID for that application service type; in this case, the client
>      would include only SRV-IDs matching the application service type
>      in its list of reference identifiers (not, for example, DNS-IDs).
>      By contrast, a more lenient client (even one built to connect only
>      to a particular kind of service) might include both SRV-IDs and
>      DNS-IDs in its list of reference identifiers.
> 
> ###

Unfortunately, this change does not solve the problem.  Consider the
following three client behaviors with respect to presented identifiers:

1. Accept only an SRV-ID.
2. Accept an SRV-ID or a DNS-ID.
3. Accept a SRV-ID, or accept a DNS-ID if there are no SRV-IDs.

Both the old and new versions of the spec allow #1 and #2, but there is
no way consistent with the spec to achieve #3 because the first sentence
of section 6.2.1 requires that the reference identifier list be
independent the presented identifier list.  And #3 is what is required
for existing applications that use DNS-IDs to transition smoothly to
SRV-IDs and achieve the highest level of security supported by both
sides.  Here is why:

- If a new server is to work with old clients, its certificate must
include a DNS-ID as well as a SRV-ID.
- If a new client is to work with old servers, it must accept a
certificate that contains a correct DNS-ID and no SRV-IDs.
- When a new client connects to a new server, it should achieve the
highest level of security supported by both sides, which in this case
means verification of the service type.  I.e., if a MITM attacker
diverts the connection to a server that has the desired DNS name but
does not provide the desired service type, the connection should fail.
In this case, the client will see a certificate that contains a correct
DNS-ID and one or more SRV-IDs, none of which have the correct service
type, and it should reject the certificate.

(You can replace "SRV-ID" with "identifier that contains service type
information" throughout the above if you like.)

-- 
Matt