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

Simon Josefsson <> Thu, 27 January 2011 12:35 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id EA9BF3A677C for <>; Thu, 27 Jan 2011 04:35:47 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -102.846
X-Spam-Status: No, score=-102.846 tagged_above=-999 required=5 tests=[AWL=-0.247, BAYES_00=-2.599, USER_IN_WHITELIST=-100]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id C4ElWwcMwqWi for <>; Thu, 27 Jan 2011 04:35:47 -0800 (PST)
Received: from ( []) by (Postfix) with ESMTP id 9BD693A6778 for <>; Thu, 27 Jan 2011 04:35:46 -0800 (PST)
Received: from ( []) (authenticated bits=0) by (8.14.3/8.14.3/Debian-5+lenny1) with ESMTP id p0RCchDZ003868 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT) for <>; Thu, 27 Jan 2011 13:38:45 +0100
From: Simon Josefsson <>
References: <20110127114502.24680.73782.idtracker@localhost>
OpenPGP: id=B565716F; url=
Date: Thu, 27 Jan 2011 13:38:43 +0100
In-Reply-To: <20110127114502.24680.73782.idtracker@localhost> ('s message of "Thu, 27 Jan 2011 03:45:02 -0800")
Message-ID: <>
User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
X-Virus-Scanned: clamav-milter 0.96.5 at yxa-v
X-Virus-Status: Clean
Subject: Re: [TLS] I-D Action:draft-ietf-tls-dtls-heartbeat-01.txt
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." <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Thu, 27 Jan 2011 12:35:48 -0000

This looks like a useful extension, it is similar to the unfortunately
non-standard keepalive feature in SSH (that I happened to implement for
libssh2 not long ago).

I have one mild concern with permitting arbitrary payload.  What is the
rationale for this?  It opens up for a side channel in TLS.  It could
also be abused to send non-standardized data.  Further, is there any
reason to allow arbitrary sized payload?  In my opinion, the
payload_length, payload and padding fields seems unnecessary to me.


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

   The length of a HeartbeatMessage in total MUST NOT exceed 2^14 or
   max_fragment_length when negotiated as defined in [RFC6066].

   type  The message type, either heartbeat_request or

   payload_length  The length of the payload.

   payload  The payload consists of arbitrary content.