Re: [TLS] I-D Action:draft-ietf-tls-dtls-heartbeat-00.txt

Juho Vähä-Herttua <juhovh@iki.fi> Sat, 19 June 2010 07:34 UTC

Return-Path: <juhovh@iki.fi>
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 884523A6912; Sat, 19 Jun 2010 00:34:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.092
X-Spam-Level:
X-Spam-Status: No, score=-1.092 tagged_above=-999 required=5 tests=[AWL=-1.207, BAYES_40=-0.185, 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 KjqlNyTCj0+P; Sat, 19 Jun 2010 00:34:13 -0700 (PDT)
Received: from smtp-3.tky.hut.fi (smtp03.tky.fi [82.130.63.73]) by core3.amsl.com (Postfix) with SMTP id 1AF7B3A6407; Sat, 19 Jun 2010 00:34:12 -0700 (PDT)
Received: from smtp.vaha-herttua.fi ([82.130.46.36]) by smtp-3.tky.hut.fi (SMSSMTP 4.1.9.35) with SMTP id M2010061910341504016 ; Sat, 19 Jun 2010 10:34:15 +0300
Received: from [192.168.1.121] (N243-60.surffi.net [80.247.243.60]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp.vaha-herttua.fi (Postfix) with ESMTPSA id 163B318152; Sat, 19 Jun 2010 10:34:16 +0300 (EEST)
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset="iso-8859-1"
From: Juho Vähä-Herttua <juhovh@iki.fi>
In-Reply-To: <AANLkTim5aw6SINvj0-E0X430G_QvFkazCRk39d-AvblH@mail.gmail.com>
Date: Sat, 19 Jun 2010 10:34:15 +0300
Content-Transfer-Encoding: quoted-printable
Message-Id: <C5CC73C4-E849-41B7-B337-F680910FB6F8@iki.fi>
References: <20100618201502.5F5763A6950@core3.amsl.com> <094A6AB6-2E1B-41B8-A66B-BE4F907ED29E@iki.fi> <AANLkTim5aw6SINvj0-E0X430G_QvFkazCRk39d-AvblH@mail.gmail.com>
To: Adam Langley <agl@imperialviolet.org>
X-Mailer: Apple Mail (2.1078)
Cc: Internet-Drafts@ietf.org, tls@ietf.org, i-d-announce@ietf.org
Subject: Re: [TLS] I-D Action:draft-ietf-tls-dtls-heartbeat-00.txt
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: Sat, 19 Jun 2010 07:34:14 -0000

On 19.6.2010, at 2.58, Adam Langley wrote:
> On Fri, Jun 18, 2010 at 6:12 PM, Juho Vähä-Herttua <juhovh@iki.fi> wrote:
>> The notation "opaque payload<0..2^14-5>" is strange, usually this notation is used like "opaque payload<0..2^16-1>" which means "two length bytes followed by N data bytes". There is no common data type that would have a maximum value of "2^14-5", but there is a common data type with maximum value of "2^16-1", that is the unsigned 16-bit integer. Since the maximum total length of 2^14-5 is already explained in the following sentence, it should be no problem to change it as "2^16-1".
> 
> RFC 5246 section 4.3 is quite clear about the meaning of 2^14-5. It's
> better to be precise in the structure.

It does, however both 2^14-5 and 2^16-1 are not real ceilings because they depend on each other. In RFC 5246 variable-length vectors are only used in handshake protocol, which can be fragmented into several records, and therefore additional restrictions regarding the vector length are not necessary. Also if max_fragment_length of RFC-4366-bis is going to be also supported by the implementation, using length of 2^14-5 will also break the heartbeat protocol.

I would prefer something like:

   struct {
      HeartbeatMessageType type;
      opaque payload[HeartbeatParameters.payload_length];
      opaque padding[HeartbeatMessage.padding_length];
      uint16 padding_length;
   } HeartbeatMessage;

The padding_length could be uint8 as well, unless there's some reason for it to be uint16. Also it should be mentioned that the total length of HeartbeatMessage shouldn't exceed the length of maximum TLSPlaintext fragment size, instead of just using 2^14-5.


Juho