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

Ilari Liusvaara <ilari.liusvaara@elisanet.fi> Thu, 21 May 2015 16:52 UTC

Return-Path: <ilari.liusvaara@elisanet.fi>
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 9D1361B2A3E for <cfrg@ietfa.amsl.com>; Thu, 21 May 2015 09:52:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.002
X-Spam-Level:
X-Spam-Status: No, score=-0.002 tagged_above=-999 required=5 tests=[BAYES_40=-0.001, RCVD_IN_DNSWL_NONE=-0.0001, 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 6NQKAj2p0aQc for <cfrg@ietfa.amsl.com>; Thu, 21 May 2015 09:52:20 -0700 (PDT)
Received: from emh06.mail.saunalahti.fi (emh06.mail.saunalahti.fi [62.142.5.116]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 2B54C1A015F for <cfrg@irtf.org>; Thu, 21 May 2015 09:52:20 -0700 (PDT)
Received: from LK-Perkele-VII (a91-155-194-207.elisa-laajakaista.fi [91.155.194.207]) by emh06.mail.saunalahti.fi (Postfix) with ESMTP id 08FEA69980 for <cfrg@irtf.org>; Thu, 21 May 2015 19:52:18 +0300 (EEST)
Date: Thu, 21 May 2015 19:52:17 +0300
From: Ilari Liusvaara <ilari.liusvaara@elisanet.fi>
To: "cfrg@irtf.org" <cfrg@irtf.org>
Message-ID: <20150521165217.GA10536@LK-Perkele-VII>
References: <C49BFA4F-76B9-48A1-913B-144D606FBBDD@isode.com> <761B50E2-036B-4517-B6DD-ABA671CC4C5F@lvh.io>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Disposition: inline
In-Reply-To: <761B50E2-036B-4517-B6DD-ABA671CC4C5F@lvh.io>
User-Agent: Mutt/1.5.23 (2014-03-12)
Sender: Ilari Liusvaara <ilari.liusvaara@elisanet.fi>
Archived-At: <http://mailarchive.ietf.org/arch/msg/cfrg/0-kQX4xY6-ZLrQ_gypqoYmilq50>
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: Thu, 21 May 2015 16:52:26 -0000

On Thu, May 21, 2015 at 08:41:34AM -0700, Laurens Van Houtven wrote:
> On May 20, 2015, at 2:16 PM, Alexey Melnikov <alexey.melnikov@isode.com> wrote:
> > 
> > #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.
> > 
> > _______________________________________________
> > Cfrg mailing list
> > Cfrg@irtf.org
> > http://www.irtf.org/mailman/listinfo/cfrg
> 
> Picking 1: #1. In order of preference: #1, #3, #2.
> 
> #2, for reasons already elucidated, is a non-starter. A collision-resistance
> constraint is nowhere near as painful as a one-shot constraint. #3 solves
> that, but at the expense of additional complexity.

"Traditional model" already introduces a fair bit of the complexity. The
problem is that protocol may very well have a preference on "inner" hash,
but that hash is unsuitable for "outer" hash, due to insufficient length.

For example, let's take TLS 1.2 CertificateVerify message[1]. It signs
potentially lengthy data. But it just so happens that TLS 1.2 keeps running
hash of just that data, using so called "prf-hash" (which happens to be
also need to be CR).

So, the TLS 1.2 endpoint would very much prefer to use prf-hash as "inner"
hash. The problem is, that prf-hash is probably SHA-256, which has
insufficient output length. Or if it isn't SHA-256, it is probably SHA-384,
which doesn't work too well for 448-bit signatures.

One would probably want to have separation between hashes. One way would
be to stick an algorithm identifier[2]. Presumably there then could be
algorithm identifier for identity transform, which would then give #3
with very little additional complexity.

Of course, protocols would then get the fun of negotiating the mess...


If one wanted to add contexts to this[3], contexts would then appear only
in outer hash (in both generation of R and in final hash). Contexts are
short and should be pulled out of executable/firmware image anyway, so
no need to support IUF for those.



[1] This does not apply to TLS 1.3 current draft, where amount of data
to sign is always small. Also, TLS 1.2 ServerKeyExchange message signs
reasonable amount of data.

[2] Whatever the identifer, it needs to be handled as a blob.

[3] Contexts are meant to prevent cross-protocol attacks (those seem to
be common). The contexts must match on both sides, or signature fails to
verify.



-Ilari