Re: [TLS] draft-ietf-tls-oob-pubkey: The Open Issue

Eric Rescorla <ekr@rtfm.com> Wed, 11 July 2012 16:06 UTC

Return-Path: <ekr@rtfm.com>
X-Original-To: tls@ietfa.amsl.com
Delivered-To: tls@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 8FD5811E810F for <tls@ietfa.amsl.com>; Wed, 11 Jul 2012 09:06:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.8
X-Spam-Level:
X-Spam-Status: No, score=-102.8 tagged_above=-999 required=5 tests=[AWL=0.177, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, RCVD_IN_DNSWL_LOW=-1, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id rKtsYS7Ln-pm for <tls@ietfa.amsl.com>; Wed, 11 Jul 2012 09:06:29 -0700 (PDT)
Received: from mail-vb0-f44.google.com (mail-vb0-f44.google.com [209.85.212.44]) by ietfa.amsl.com (Postfix) with ESMTP id 7ABF511E8110 for <tls@ietf.org>; Wed, 11 Jul 2012 09:06:26 -0700 (PDT)
Received: by vbbez10 with SMTP id ez10so937062vbb.31 for <tls@ietf.org>; Wed, 11 Jul 2012 09:06:57 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:x-originating-ip:in-reply-to:references:from:date :message-id:subject:to:cc:content-type:content-transfer-encoding :x-gm-message-state; bh=OOu9HCnvFS89ZB2ibeUjYtXn/8x7YhhChYaLRCCNgD0=; b=iWyWfaI/egtyfATbOJkhri/zcilze/5LW2+VrekrdK5JnNyh3/STtueD2tZqWVe7bI 1hOYkAKs3tWpfkuVJUEdNVVZoIvCp6Df1LhkiR+x359hIVYrnkkHoU67BaHDXcOLjEfM QVZZwsobQfUe2Yo6hJwhSUW4u00kaxnNaQJEWVQVinHYjnTS02gUszkwRNHXuDxM0rFL tMzoKXlJ/fXR1i1hKYYLF/FiZTb79R85Cune+PRK2lms4rZSQAkxBXoZLeecx0PmoN3u LE2BOEqwU42wzXtqWCV7FGPv3224yPF+wOGKvVQ60vy3G4WNKpP3tEJneBQCKyj1LLYF s1jg==
Received: by 10.52.100.229 with SMTP id fb5mr19945063vdb.102.1342022816922; Wed, 11 Jul 2012 09:06:56 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.52.35.209 with HTTP; Wed, 11 Jul 2012 09:06:16 -0700 (PDT)
X-Originating-IP: [74.95.2.173]
In-Reply-To: <B85C6601-9090-42F1-AEB1-B8575F483B6F@gmx.net>
References: <1CA8C4CB-1FD8-4498-9988-41B6334F58FD@gmx.net> <CABcZeBOUzauWUzosjKB+TphvuJgCoY929zb_NezfypbmJv98gQ@mail.gmail.com> <B85C6601-9090-42F1-AEB1-B8575F483B6F@gmx.net>
From: Eric Rescorla <ekr@rtfm.com>
Date: Wed, 11 Jul 2012 09:06:16 -0700
Message-ID: <CABcZeBPDfZoE=Fg-M=WfgbBXNxE7F_3-=erw2TWYUdFdLQEFBg@mail.gmail.com>
To: Hannes Tschofenig <hannes.tschofenig@gmx.net>
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable
X-Gm-Message-State: ALoCoQmf23Xe1C9v0KAMPdQGEWoHG2BeaSPLPlElLBzlPCu8bEs44qLpUSSy2QnwaenEossPc9ac
Cc: tls@ietf.org
Subject: Re: [TLS] draft-ietf-tls-oob-pubkey: The Open Issue
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <tls.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tls>, <mailto:tls-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/tls>
List-Post: <mailto:tls@ietf.org>
List-Help: <mailto:tls-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tls>, <mailto:tls-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 11 Jul 2012 16:06:30 -0000

On Wed, Jul 11, 2012 at 8:57 AM, Hannes Tschofenig
<hannes.tschofenig@gmx.net> wrote:
> Hi Ekr,
>
> thanks for your quick response.
>
> When we started the work we just copied the functionality from RFC 6091 and that RFC defined a new "cert_type" extension.
> As it turns out RFC 6091 didn't IMHO clearly specify the semantic of the value in the cert type.
>
> There are various scenarios, as described below.
>
> For example, when a client sends a cert_type="raw-key, x509" does this mean it can raw public keys for client authentication and it is OK to receive an X.509 for server authentication? Does it want to receive also a raw public key from the server when the server supports it?

Sure, the indication of what you want to do versus what you want the other side
to do seems poentially separable.


>>
>>> I) Server uses Raw Public Keys (client authentication happens at some other layer)
>>> (the DANE use case)
>>>
>>> client_hello,
>>> raw-public-key-indicator="Server, when you send me your raw public key?
>>
>> Is your suggestion that this is indicating ":I would not support X.509?
>
> There has to be a way to indicate what is supported. The rest is not supported.

Well, the basic state of TLS clients is that they support X.509. And of
course servers are allowed to ignore unknown extensions, so there is
always some chance that you will just get an X.509 cert anyway.


>>> I support this out-of-band key validation using DANE." ->
>>
>> Wait, who said anything about indicating DANE here? The agreed upon
>> indication was
>> "I would support a public key", nothing about DANE.
>>
>>
> What happens if the client supports raw public keys but does not support the out-of-band validation using DNSSEC?

What do you mean? There are only like 50 other ways to verify raw public keys,
starting with fingerprints. The indication here seems to be "if you send me a
raw key I will do something sensible"



>>>                          <-  server_hello,
>>>                              raw-public-key="OK. The certificate structure below contains my raw public key.",
>>>                              certificate, // with raw public key inside
>>>                              server_key_exchange,
>>>                              server_hello_done
>>>
>>> client_key_exchange,
>>> change_cipher_spec,
>>> finished                  ->
>>>
>>>                          <- change_cipher_spec,
>>>                             finished
>>>
>>> Application Data        <------->     Application Data
>>>
>>>
>>> II) Client and Server use Raw Public Keys
>>> (the smart object use case - CORE working group)
>>>
>>> client_hello,
>>> raw-public-key="Server, please send me your raw public key and I will then send you mine. Are you OK processing my raw public key for client authentication?" ->
>>
>> This is not a semantic associated with the client. In TLS the server
>> requests client auth. At most the client could say "I could
>> send you a raw public key for auth if you asked for it"
>
> The important thing here is the indication that both the server and the client are able to process and accept raw public keys.

Well, what the client can say is "I would accept a raw key if you sent
it" and "I could send you a raw key
if you asked", right?



>> This is in certreq, no?
>
> I should have rather written. The certreq is asking for your raw public key since you said you support raw public keys (but you have may other certificate types).

OK.



>>> I use X.509 for server-side authentication",
>>
>> Why would this need an indication?
>
> I believe the problem is that we have to provide a way for the client to figure out what is in the certificate extension. In the raw public key case we only dump the SubjectPublicKeyInfo structure into the Certificate payload.
>
> We make it easier for the client to parse the content of the structure.

Sure, I have no problem with "the certificate message contains the following"

-Ekr