Re: [TLS] Review of draft-ietf-tls-rfc4366-bis-04

Eric Rescorla <ekr@networkresonance.com> Fri, 24 April 2009 22:47 UTC

Return-Path: <ekr@networkresonance.com>
X-Original-To: tls@core3.amsl.com
Delivered-To: tls@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 2039E28C0EC for <tls@core3.amsl.com>; Fri, 24 Apr 2009 15:47:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.495
X-Spam-Level:
X-Spam-Status: No, score=-0.495 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, FH_RELAY_NODNS=1.451, HELO_MISMATCH_COM=0.553, RDNS_NONE=0.1]
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 s1NZ9FpCg10I for <tls@core3.amsl.com>; Fri, 24 Apr 2009 15:47:44 -0700 (PDT)
Received: from kilo.networkresonance.com (unknown [207.105.81.80]) by core3.amsl.com (Postfix) with ESMTP id 3ACF13A6B42 for <TLS@ietf.org>; Fri, 24 Apr 2009 15:47:44 -0700 (PDT)
Received: from kilo.local (unknown [127.0.0.1]) by kilo.networkresonance.com (Postfix) with ESMTP id 8142218A429; Fri, 24 Apr 2009 15:51:34 -0700 (PDT)
Date: Fri, 24 Apr 2009 15:51:34 -0700
From: Eric Rescorla <ekr@networkresonance.com>
To: Simon Josefsson <simon@josefsson.org>
In-Reply-To: <87vdotis9p.fsf@mocca.josefsson.org>
References: <AC1CFD94F59A264488DC2BEC3E890DE507E145E8@xmb-sjc-225.amer.cisco.com> <87vdotis9p.fsf@mocca.josefsson.org>
User-Agent: Wanderlust/2.15.5 (Almost Unreal) Emacs/22.3 Mule/5.0 (SAKAKI)
MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka")
Content-Type: text/plain; charset="US-ASCII"
Message-Id: <20090424225134.8142218A429@kilo.networkresonance.com>
Cc: TLS@ietf.org
Subject: Re: [TLS] Review of draft-ietf-tls-rfc4366-bis-04
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.9
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/listinfo/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: Fri, 24 Apr 2009 22:47:46 -0000

At Sat, 25 Apr 2009 00:46:58 +0200,
Simon Josefsson wrote:
> 
> "Joseph Salowey (jsalowey)" <jsalowey@cisco.com> writes:
> 
> > This is a working group last call for comments on
> > draft-ietf-tls-rfc4366-bis-04 prior to sending this document on to the
> > IESG for publication as a proposed standard RFC.  The document and
> > revision history can be found here:
> >
> > http://tools.ietf.org/html/draft-ietf-tls-rfc4366-bis-04
> >
> >
> > Please send any comments to the list by May 15, 2009.  
> 
> Hi.  The document looks good in general, however I have two comments:
> 
> 1)
> 
> RFC 4366 contains:
> 
>       struct {
>           opaque url<1..2^16-1>;
>           Boolean hash_present;
>           select (hash_present) {
>               case false: struct {};
>               case true: SHA1Hash;
>           } hash;
>       } URLAndOptionalHash;
> 
> The draft changes the struct to:
> 
>       struct {
>           opaque url<1..2^16-1>;
>           opaque SHA1Hash[20];
>       } URLAndHash;
> 
> An RFC 4366 implementation that receives a RFC4366bis struct will reject
> the encoding as corrupt, and possibly refuse the connection.
> 
> Likewise, an RFC 4366bis implementations will reject a RFC4366 struct.
> 
> It is possible to implement a parser that will accept both structs, but
> this is not discussed nor suggested by the document.
> 
> I suggest that a padding byte is inserted as follows:
> 
>       struct {
>           opaque url<1..2^16-1>;
>           opaque padding<1>;
>           opaque SHA1Hash[20];
>       } URLAndHash;
> 
> And some text is added:
> 
>    The "padding" byte MUST be 0x01.  It is present to make the structure
>    backwards compatible.
> 
> TLS 1.2 also changed old structs, let's not make the same mistake again.

Oh, good catch.

I would leave it as-is in 4366 and simply say // Must be true...

-Ekr