[TLS] Heartbeat and padding

Michael D'Errico <mike-list@pobox.com> Sun, 27 April 2014 00:27 UTC

Return-Path: <mike-list@pobox.com>
X-Original-To: tls@ietfa.amsl.com
Delivered-To: tls@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A2AAD1A0706 for <tls@ietfa.amsl.com>; Sat, 26 Apr 2014 17:27:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.273
X-Spam-Level:
X-Spam-Status: No, score=-2.273 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RP_MATCHES_RCVD=-0.272, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 4FwvLz9jc2oo for <tls@ietfa.amsl.com>; Sat, 26 Apr 2014 17:27:52 -0700 (PDT)
Received: from sasl.smtp.pobox.com (a-pb-sasl-quonix.pobox.com [208.72.237.25]) by ietfa.amsl.com (Postfix) with ESMTP id E03F51A0705 for <tls@ietf.org>; Sat, 26 Apr 2014 17:27:51 -0700 (PDT)
Received: from sasl.smtp.pobox.com (unknown [127.0.0.1]) by a-pb-sasl-quonix.pobox.com (Postfix) with ESMTP id 5AE58113EA for <tls@ietf.org>; Sat, 26 Apr 2014 20:27:44 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=message-id :date:from:mime-version:to:subject:content-type :content-transfer-encoding; s=sasl; bh=Q0gWhVpp2pnikwj5RcQrIQG/v 4A=; b=PnuhdMbiXpyPIdA+dP0WpLQuCF0lr3txlTQ9QcKVb4lLqCGwRawo/T6/I QDAXXy8tgmSNbWjvhZxRo+mvMKzNbsV9lMA9E7gY/llNcLyd2Ss3Op0N7bOWKsVM nx0V1+RhWZRfT2/QSkFT/kACxxPDFBveHKPCDEqD3I79P3fWRY=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=message-id:date :from:mime-version:to:subject:content-type :content-transfer-encoding; q=dns; s=sasl; b=gpctkuT5GnDsSpIauRK eAGBeQ0gQMYfZCSBfeOw7b54kIoaT6ovbWN8KsKpKhKshgO5iDYvwW5cqne2ytnU dOPZYtWQmFDu5Lk8G+mobvepMmg/n23gdELL4jLwhq59c+896VvMIjk+PxypBZUx Q4BtVEyh5OOvrtkWF8fZHR74=
Received: from a-pb-sasl-quonix.pobox.com (unknown [127.0.0.1]) by a-pb-sasl-quonix.pobox.com (Postfix) with ESMTP id 53E01113E8 for <tls@ietf.org>; Sat, 26 Apr 2014 20:27:44 -0400 (EDT)
Received: from iMac.local (unknown [24.234.153.62]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by a-pb-sasl-quonix.pobox.com (Postfix) with ESMTPSA id 64234113E7 for <tls@ietf.org>; Sat, 26 Apr 2014 20:27:42 -0400 (EDT)
Message-ID: <535C4EFD.7030608@pobox.com>
Date: Sat, 26 Apr 2014 17:27:41 -0700
From: Michael D'Errico <mike-list@pobox.com>
User-Agent: Thunderbird 2.0.0.24 (Macintosh/20100228)
MIME-Version: 1.0
To: TLS Mailing List <tls@ietf.org>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
X-Pobox-Relay-ID: BF0D9142-CDA2-11E3-8BC5-6F330E5B5709-38729857!a-pb-sasl-quonix.pobox.com
Archived-At: http://mailarchive.ietf.org/arch/msg/tls/5ZLehPM7EAZUa-VO7cII_8E18XY
Subject: [TLS] Heartbeat and padding
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.15
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: Sun, 27 Apr 2014 00:27:53 -0000

Not related to Heartbleed(tm), do we need to revisit the Heartbeat spec.
due to the random padding?  There is a requirement to add at least 16
bytes of random padding to every message:

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

    ...

    padding:  The padding is random content that MUST be ignored by the
       receiver.  The length of a HeartbeatMessage is TLSPlaintext.length
       for TLS and DTLSPlaintext.length for DTLS.  Furthermore, the
       length of the type field is 1 byte, and the length of the
       payload_length is 2.  Therefore, the padding_length is
       TLSPlaintext.length - payload_length - 3 for TLS and
       DTLSPlaintext.length - payload_length - 3 for DTLS.  The
       padding_length MUST be at least 16.

    The sender of a HeartbeatMessage MUST use a random padding of at
    least 16 bytes.  The padding of a received HeartbeatMessage message
    MUST be ignored.


Since the recipient MUST ignore the padding, they can't reverse engineer
the peer's PRNG, so maybe this isn't a problem?

Mike