Re: [Cfrg] Elliptic Curves - signature scheme: friendliness to low memory implementations (ends on June 3rd)

Taylor R Campbell <campbell+cfrg@mumble.net> Wed, 03 June 2015 04:20 UTC

Return-Path: <campbell@mumble.net>
X-Original-To: cfrg@ietfa.amsl.com
Delivered-To: cfrg@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 33F2D1B344D for <cfrg@ietfa.amsl.com>; Tue, 2 Jun 2015 21:20:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level:
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] 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 B8VfZniHCSaX for <cfrg@ietfa.amsl.com>; Tue, 2 Jun 2015 21:20:05 -0700 (PDT)
Received: from jupiter.mumble.net (jupiter.mumble.net [74.50.56.165]) by ietfa.amsl.com (Postfix) with ESMTP id 8A66E1B3457 for <cfrg@irtf.org>; Tue, 2 Jun 2015 21:19:44 -0700 (PDT)
Received: by jupiter.mumble.net (Postfix, from userid 1014) id 23CE960523; Wed, 3 Jun 2015 04:18:50 +0000 (UTC)
From: Taylor R Campbell <campbell+cfrg@mumble.net>
To: Alexey Melnikov <alexey.melnikov@isode.com>
In-reply-to: <C49BFA4F-76B9-48A1-913B-144D606FBBDD@isode.com> (alexey.melnikov@isode.com)
Date: Wed, 03 Jun 2015 04:19:43 +0000
Sender: Taylor R Campbell <campbell@mumble.net>
User-Agent: IMAIL/1.21; Edwin/3.116; MIT-Scheme/9.1.99
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Message-Id: <20150603041850.23CE960523@jupiter.mumble.net>
Archived-At: <http://mailarchive.ietf.org/arch/msg/cfrg/RQ6eC2fJ9rySGns-q7xwrGmfsMY>
Cc: cfrg@irtf.org
Subject: Re: [Cfrg] Elliptic Curves - signature scheme: friendliness to low memory implementations (ends on June 3rd)
X-BeenThere: cfrg@irtf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Crypto Forum Research Group <cfrg.irtf.org>
List-Unsubscribe: <http://www.irtf.org/mailman/options/cfrg>, <mailto:cfrg-request@irtf.org?subject=unsubscribe>
List-Archive: <http://www.irtf.org/mail-archive/web/cfrg/>
List-Post: <mailto:cfrg@irtf.org>
List-Help: <mailto:cfrg-request@irtf.org?subject=help>
List-Subscribe: <http://www.irtf.org/mailman/listinfo/cfrg>, <mailto:cfrg-request@irtf.org?subject=subscribe>
X-List-Received-Date: Wed, 03 Jun 2015 04:26:50 -0000

   Date: Wed, 20 May 2015 22:16:16 +0100
   From: Alexey Melnikov <alexey.melnikov@isode.com>

   Chairs wish to poll the group on the following topic (please pick one):

   #1: The signature scheme should follow the traditional model of hashing
   the message to be signed, thus trivially supporting IUF APIs in
   constant-space, at the cost of requiring collision resistant hash
   functions.

   #2: The signature scheme should not depend on collision resistance, at the
   cost of the signing algorithm having to buffer messages to be signed.

   #3: option #2, but with an additional "large message" mode defined for
   protocols that feel that they need it, where the message to be signed is
   actually a hash of the true message.

#2.  Let's not repeat the error of RSASSA-PSS's reliance on collision
resistance which led to certificate forgery in the real world with MD5
collisions[1], and let's discourage anyone from designing denial of
service against verifiers into new protocols.

Given a deterministic signature scheme S_k(m) built on a hash function
F_r(m) needing only target collision resistance, it is easy to imagine
a randomized long-message signature scheme satisfied either by
signing-time entropy or by collision resistance of F_r: for a secret
key k and message m, randomly generate r and yield as the signature
`F_r' || S_k(`F_r' || F_r(m)).  The reverse is not so easy.

But while this scheme may be useful to put band-aids over legacy
protocols, it encourages designing protocols that admit denial of
service for verifiers.  Practical protocols involving large messages
should split them into parts that can be verified independently.

The best way to split signed messages likely varies from application
to application: signing numbered parts individually in sequence or
computing a Merkle tree of the parts using F_r and then signing the
root[2] are both plausible.  But there's no need for recommendation of
the basic underlying signature scheme to wait on standardizing these.


[1] Bellare & Rogaway's original PSS proposal, in `The Exact Security
of Digital Signatures -- How to Sign with RSA and Rabin' from
Eurocrypt'96, would have avoided the problem by relying only on target
collision resistance of a keyed hash function.  But RSA, Inc. broke it
when standardizing RSASSA-PSS for PKCS#1 in 2003, by unkeying and
derandomizing the hash function.

[2] For example, Tahoe-LAFS uses a signed Merkle tree for random
access to mutable files.  However, rather than randomly choose F_r per
message, it uses the fixed hash m |---> SHA-256(SHA-256(m)), so it
relies on collision resistance of SHA-256.