Re: [MLS] Adapting Hierarchical Key Derivation for Ephemeral Signatures in MLS

Nadim Kobeissi <nadim@symbolic.software> Sat, 13 October 2018 05:45 UTC

Return-Path: <nadim@symbolic.software>
X-Original-To: mls@ietfa.amsl.com
Delivered-To: mls@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 493E1130EBC for <mls@ietfa.amsl.com>; Fri, 12 Oct 2018 22:45:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.999
X-Spam-Level:
X-Spam-Status: No, score=-1.999 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=symbolic.software
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 Ia12uV9mr_wJ for <mls@ietfa.amsl.com>; Fri, 12 Oct 2018 22:45:21 -0700 (PDT)
Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com [IPv6:2a00:1450:4864:20::336]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9C19F130EBA for <mls@ietf.org>; Fri, 12 Oct 2018 22:45:20 -0700 (PDT)
Received: by mail-wm1-x336.google.com with SMTP id y11-v6so14048771wma.3 for <mls@ietf.org>; Fri, 12 Oct 2018 22:45:20 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=symbolic.software; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=c27VnqvTYa18TU9aD7cPgMjkk0IG13+OH/GgoYpo2vE=; b=kn0XORGi8l26Xlf4wGUEcGYHVUTQO5ysy2msWYCB/nv4eCOt4gITdWeNtrVjUENt6q +XVpu8DC0Ca1/R1TmCmDzQNpndpgHeWQGyY0OQ3ik+i3t6JDnHB9bDte7bw6o5Xm4F4m o7EclN+dIcaC3daHwYKso/2tGfY0gb8Ab+oEk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=c27VnqvTYa18TU9aD7cPgMjkk0IG13+OH/GgoYpo2vE=; b=gfeVi/nmWFXOOroYo+GcXu0imWtYnEcYuNCHkw6hPx8q3nsUv+OSBip08U86MVLUdT 95eZ+9Te1Uy+TWZRF0X+PrQrxwpbkJSmvmHfR/JEtq4rxTO3yDy/Hb1h2hvHw8EqKQxG /RaUKBQeZ2q4qeNCtjKc4iEHVzUT4HwexuKoo+YlJIE2UClJis1P1td0ZNbidoEacd0q aJSfQW1YlF4pjLsB7ilVmh3F2MxQYcvrAKiumtriIvZK4qDVKj09EfdjBQRWicysACpi v6kwmKsGqxbUPme7koqkCsn1wVrHcAf4XrWaCSUbeoX/MsyNpN0a5TigESh9fsBgXrLT 6v4w==
X-Gm-Message-State: ABuFfohENMLBQakWSCSYWLQK1SMRLxyDeEy6JkQFfARz8I+KGxYeUexE JNQ3V9ldWCCudae/mP9Yc0/octKe01ywhTk6r4nyFw==
X-Google-Smtp-Source: ACcGV62ZrT7H7msRvvpBtK/HzoLXUsfIB22R81esZ+WwBI8rr/vFIzVwHZQ2jlxgt8eSXUkBbup33Pu3pkJkfQVtJys=
X-Received: by 2002:a1c:14d1:: with SMTP id 200-v6mr7453110wmu.106.1539409518745; Fri, 12 Oct 2018 22:45:18 -0700 (PDT)
MIME-Version: 1.0
References: <CAJR2JpgwrgykbRGCCaEutou7x6-j4SGKFXurKah8rya=jMJ2cw@mail.gmail.com> <CA+9kkMDPp15pCmSwy5TeubZWNii0+uweH1XQATktP6=w_LhZXQ@mail.gmail.com> <CAJR2Jphb7aSVmY7F=wi3a5f5nB_sSNmtCqKBpN9JPE+5RqRnMw@mail.gmail.com> <0D3E4C60-1768-4661-85D5-AFA7B188DB0C@cloudflare.com>
In-Reply-To: <0D3E4C60-1768-4661-85D5-AFA7B188DB0C@cloudflare.com>
From: Nadim Kobeissi <nadim@symbolic.software>
Date: Sat, 13 Oct 2018 07:45:09 +0200
Message-ID: <CAJR2JpjDt5zGMNhcwLRL4LBhJXgfzTJiz=xzRopvcb=2QRbJxQ@mail.gmail.com>
To: brendan@cloudflare.com
Cc: ted.ietf@gmail.com, mls@ietf.org
Content-Type: multipart/alternative; boundary="0000000000008771d5057815b582"
Archived-At: <https://mailarchive.ietf.org/arch/msg/mls/BZR07buIs7PCvPfy0diI_X6z7rs>
Subject: Re: [MLS] Adapting Hierarchical Key Derivation for Ephemeral Signatures in MLS
X-BeenThere: mls@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Messaging Layer Security <mls.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/mls>, <mailto:mls-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/mls/>
List-Post: <mailto:mls@ietf.org>
List-Help: <mailto:mls-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/mls>, <mailto:mls-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 13 Oct 2018 05:45:27 -0000

Dear Brendan,
Your proposed scheme could work, too. The disadvantages it presents, it
seems to me, aren't severe:

   - Your proposed scheme seems to have a larger performance overhead: each
   leaf keypair/epoch tuple would have to be generated and signed in advance.
   - We'd need to know the number of epochs we're allowing for this MLS
   session in advance.
   - We may not be able to parametrize the choice of upcoming signature
   keys based on a dynamically generated epoch identifier with the same degree
   of freedom that HKD would give us.

> Also, since I didn’t go to the interim, what problem do forward-signature
signature schemes solve for MLS?

We're simply trying to limit the impact of device compromise. We're able to
do this more easily for encryption keys, but signatures are more tricky.

Nadim Kobeissi
Symbolic Software • https://symbolic.software
Sent from office


On Sat, Oct 13, 2018 at 2:43 AM Brendan McMillion <brendan@cloudflare.com>
wrote:

> Hey Nadim
>
> I believe the typical way to build a forward-secure signature scheme is
> with a certification tree. You’d:
>
> 1. Generate a root keypair.
> 2. Generate N leaf keypairs.
> 3. Sign each leaf keypair and the epoch it is meant to be used in, with
> the root keypair.
> 4. Delete the root private key.
>
> Your root public key is what’s distributed to everybody. A signature at a
> given epoch is the tuple: (leaf public key, sig over leaf key from root
> key, sig over data from leaf key).
>
> Could you talk about why a scheme like the above is not suitable here?
> Also, since I didn’t go to the interim, what problem do forward-signature
> signature schemes solve for MLS?
>
> On Oct 12, 2018, at 1:22 PM, Nadim Kobeissi <nadim@symbolic.software>
> wrote:
>
> Dear Ted,
> Thanks for your quick read-through!
>
> You seem to be referring to [1], not to [2] as you wrote. In [1], the
> concept of "hardened" keys is defined and is also ported by [2] into
> Ed25519.
>
> > What I think that means is that if an attacker ever gets access to both
> an extended public key and any extended private key, we have lost forward
> secrecy for all the MLS communications covered by any keys derived from any
> of the epoch pairs.  Is that correct?
>
> This is correct in the sense that it allows you to rewind the key
> derivation chain. However, this does not apply to hardened keys. This is
> precisely why I'm trying to understand how epoch identifiers are agreed
> upon, in order to see whether we can use them to restrict the HKD logic to
> use only "hardened" keys in MLS. Since hardened keys in [2] cannot
> themselves have children, it becomes important to understand whether we can
> select enough of them for an HKD design in MLS to have a meaningful impact,
> and how this selection/potential caching of hardened keys would work.
>
> > [...] means that Alice must refrain from ever using the parent extended
> public key has a signing key, but must instantiate signing keys from the n
> + 0 epoch.
>
> This could also be a solution, I suppose, but it sounds like it would
> result in weaker "signing forward secrecy" (or whatever we're calling this
> property) than focusing on hardened keys, although I'm frankly not sure off
> the top of my head.
>
> Nadim Kobeissi
> Symbolic Software • https://symbolic.software
> Sent from office
>
>
> On Fri, Oct 12, 2018 at 10:03 PM Ted Hardie <ted.ietf@gmail.com> wrote:
>
>> Hi Nadim,
>>
>> I suspect I'm missing something simple here in your proposal.  According
>> to your reference 2, one of the issues with the derivation of this type of
>> hierarchical key is:
>>
>>  that knowledge of a parent extended public key plus any non-hardened
>>> private key descending from it is equivalent to knowing the parent extended
>>> private key (and thus every private and public key descending from it).
>>> This means that extended public keys must be treated more carefully than
>>> regular public keys. It is also the reason for the existence of hardened
>>> keys, and why they are used for the account level in the tree. This way, a
>>> leak of account-specific (or below) private key never risks compromising
>>> the master or other accounts.
>>>
>>
>> What I think that means is that if an attacker ever gets access to both
>> an extended public key and any extended private key, we have lost forward
>> secrecy for all the MLS communications covered by any keys derived from any
>> of the epoch pairs.  Is that correct?
>>
>> This appears to make handling required of the parent extended public key
>> roughly equivalent to the handling of a private key, so that your step:
>>
>> Alice sends a public signing key to Bob during epoch n.
>>
>> means that Alice must refrain from ever using the parent extended public
>> key has a signing key, but must instantiate signing keys from the n + 0
>> epoch.
>>
>> Is that a correct understanding?
>>
>> Thanks,
>>
>> Ted
>>
>>
>> On Fri, Oct 12, 2018 at 12:47 PM Nadim Kobeissi <nadim@symbolic.software>
>> wrote:
>>
>>> Hello everyone,
>>>
>>> I've been working on adapting Hierarchical Key Derivation (HKD) in order
>>> to obtain some kind of ephemeral signatures that may be useful in MLS. I've
>>> arrived at a point where I'm optimistic that this is a direction worth
>>> pursuing and might indeed be a solution to this problem.
>>>
>>> HKD was at some point a candidate for how signature keys are managed per
>>> epoch in the Tor Hidden Service design [0]. HKD logic has also been
>>> implemented in Bitcoin wallets for a while now [1]. HKD constructions can
>>> be also derived from existing popular fast signature algorithms such as
>>> Ed25519 with minimal changes [2], making them an easy fit for MLS. Very
>>> simply, the functionality that HKD signature schemes bring to MLS is the
>>> following:
>>>
>>>    - Alice sends a public signing key to Bob during epoch n.
>>>    - At the onset of epoch n+1, Bob is able to immediately calculate
>>>    Alice's public signing key for epoch n+1 based purely on his knowledge of
>>>    Alice's public signing key for epoch 0. Alice doesn't need to send new
>>>    signing key information to Bob.
>>>    - At this point, Bob can delete Alice's public signing key for epoch
>>>    n.
>>>    - More importantly, Alice herself can delete Alice's private signing
>>>    key for epoch n, keeping only her private signing key for epoch n+1.
>>>
>>> The way that this could work in MLS would be heavily based on
>>> HDKeys-Ed25519 [2]. I'll resist paraphrasing the paper, and instead will
>>> point out the relevant sections (which are short, well-written and worth
>>> reading:)
>>>
>>>    - Section 2 describes the original concept as used for Bitcoin
>>>    wallet derivation.
>>>    - Section 4 describes the modifications to Ed25519 to enable HKD
>>>    constructions.
>>>    - Section 5 describes how private and public child keys are
>>>    generated (Fig. 1 is also helpful.)
>>>
>>> My questions:
>>>
>>>    - How are we deriving epoch identifiers? Are they simply counters,
>>>    or each epoch identified by a nonce that's communicated confidentially? If
>>>    you read [2], you'll see why this can be important.
>>>    - Performance impact seems to be negligible for Montgomery-based
>>>    signing primitives, but I'm interested in more insight on this.
>>>    - Is anyone else interested in having a standard
>>>    HDKeys-Ed25519 implementation? I've been working on one in JavaScript and
>>>    plan to eventually also write one in Go. Perhaps Richard would like to help
>>>    with a C++ version?
>>>    - I'm also interested in hearing your thoughts on this generally.
>>>
>>> During the interim meeting (as well as before it), it was frequently
>>> discussed how ephemeral signatures may be useful for MLS. This also appears
>>> to be slated as a discussion topic for IETF 103, so it would be great if we
>>> could continue the discussion there as well.
>>>
>>> References:
>>> [0]
>>> https://gitweb.torproject.org/torspec.git/tree/proposals/224-rend-spec-ng.txt#n1979
>>> [1] https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki
>>> [2] https://cardanolaunch.com/assets/Ed25519_BIP.pdf
>>>
>>> Nadim Kobeissi
>>> Symbolic Software • https://symbolic.software
>>> Sent from office
>>> _______________________________________________
>>> MLS mailing list
>>> MLS@ietf.org
>>> https://www.ietf.org/mailman/listinfo/mls
>>>
>> _______________________________________________
> MLS mailing list
> MLS@ietf.org
> https://www.ietf.org/mailman/listinfo/mls
>
>
>