Re: [MLS] Key Schedule: Replace DPRF with multi-input PRF (NPRF)

Richard Barnes <rlb@ipv.sx> Fri, 24 July 2020 17:54 UTC

Return-Path: <rlb@ipv.sx>
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 176D23A10D2 for <mls@ietfa.amsl.com>; Fri, 24 Jul 2020 10:54:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.896
X-Spam-Level:
X-Spam-Status: No, score=-1.896 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=ipv-sx.20150623.gappssmtp.com
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 X-9Ea6z1S5vB for <mls@ietfa.amsl.com>; Fri, 24 Jul 2020 10:54:11 -0700 (PDT)
Received: from mail-qk1-x733.google.com (mail-qk1-x733.google.com [IPv6:2607:f8b0:4864:20::733]) (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 647743A10D1 for <mls@ietf.org>; Fri, 24 Jul 2020 10:54:06 -0700 (PDT)
Received: by mail-qk1-x733.google.com with SMTP id h7so9396537qkk.7 for <mls@ietf.org>; Fri, 24 Jul 2020 10:54:06 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ipv-sx.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=I1NRqwBt0CoGsTZyMIqOUccgfz2ne+XYCc/gOz7OBCE=; b=WmAZ80ydhM+BOCxvaGwFsuNaNt6aWtF1kiKEMDSR99MG+cjfmg+zp92yPaYcI9OGeT xK+F79CrifduAXuUbxBpqFKO9e3dxdQdEHU4ucBetZEZEEfYYNcNqs8ZyFApbZfTMjhh ttf7R/pVF+y0FDtcmw1Rg9Mh1NojculThDAgdBbrt8ElD3Pj2CBUG/Mhgx6UOkjUlU6Z J8ZnQOsAhgLC0FMAAC2p1z0f8zwtoFmkZjDURUtZYPHqHgZ6Vsqo0bFLOESz7AWlYVMw JYQPvydMqQ8msTUGt/pQCDauA34WTswW50WGv5Xb8V5IPMxrZCN1Irn+Thy4e0W2wmKU Topw==
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=I1NRqwBt0CoGsTZyMIqOUccgfz2ne+XYCc/gOz7OBCE=; b=ofCwl6Cx67ouZ1dK82tdQjLS6f+RrGfVK4gv/NWEYS6ixHAcJklDJJJRm3hcwM8OrF k+jnyRgCZDKVEXSojTu00D/KqxkvgbDJNp3g7OslYrAciI1DaU+TmdE3MkqjlsW0T4Ot /jDgnbLWdWQ3gKWEeP2PrGEqYenMRCP5Qhfs1PC2RWBoVrRyMoRzhEHqfWvzooycJl9i ciQi431MYGMMvQYh9yTkVU/Uy2NRE4dItAwMSMbxa0oWiwfK0hITQ7s7bgS+BaG93X1Y 6uL9U7AnFFVORqGtS3KoYVKjyJr2ajOyXnPIm/x4/yDhi3nJWu8kE1tdXDPmNyeADqqO uiTg==
X-Gm-Message-State: AOAM530gfODmNnU56rz2L/iqOz7uw4lOTExETek3F8KkzOrkRsTbARRv U1Rh8aA6NxUELzkVQl5yQ9QY28ZRWJnuCghEV111/A==
X-Google-Smtp-Source: ABdhPJyust8tRUFJtl+sLczZbl5tHshxsPgyRtb8jAkBG+hYSU80cGZ7n5cV3dccJZWgQh1YIncsBhiTxa1SNJzl+8I=
X-Received: by 2002:ae9:ee06:: with SMTP id i6mr11424090qkg.132.1595613244909; Fri, 24 Jul 2020 10:54:04 -0700 (PDT)
MIME-Version: 1.0
References: <682de0fe-41c2-9b96-067b-6cb4b08e1e7c@aalto.fi> <7028_1594089739_5F03E109_7028_154_1_B0D017EB-1A15-4C96-84C8-1E202A5A51EF@nps.edu> <4ceb1790-ef66-0113-0f59-023ab1e713e7@aalto.fi>
In-Reply-To: <4ceb1790-ef66-0113-0f59-023ab1e713e7@aalto.fi>
From: Richard Barnes <rlb@ipv.sx>
Date: Fri, 24 Jul 2020 13:53:38 -0400
Message-ID: <CAL02cgTLkZrUBAD3LLKtgwfg+eNZKWMn0qEJ7=H98pRM=gzYxQ@mail.gmail.com>
To: Chris Brzuska <chris.brzuska@aalto.fi>
Cc: Messaging Layer Security WG <mls@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000a97d6605ab33a8ca"
Archived-At: <https://mailarchive.ietf.org/arch/msg/mls/_qoNRCIZmg_Zh7DZe1wy2_b1m1Q>
Subject: Re: [MLS] Key Schedule: Replace DPRF with multi-input PRF (NPRF)
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: Fri, 24 Jul 2020 17:54:16 -0000

Hey Chris,

I was looking again at the key schedule as I was drafting #362 [1].  A
couple of things occurred to me:

1. You can't add the commit secret and PSKs in the same operation, because
you want new joiners to put in the PSK, but you don't want them to have to
know the commit secret.

2. The nPRF construction you propose has the same number of HMAC
invocations as the chained-HKDF-Extract stuff that's in the current draft /
362.

Given those observations, I wonder how much an nPRF is really buying us.
It's not saving us any HMAC calls, and relative to #362, it would only
coalesce two DPRF calls into one nPRF call.

Maybe there's some benefit if there are multiple PSKs?  But even then, it
seems like you could add a layer, computing a synthetic PSK from the
multiple ones, and keeping the main key schedule simple.

At this point, given the above and the novelty of the nPRF construction,
I'm inclined to just stick with HKDF and merge #362 instead of #336.

--Richard


[1] https://github.com/mlswg/mls-protocol/pull/362

On Tue, Jul 7, 2020 at 5:30 AM Chris Brzuska <chris.brzuska@aalto.fi> wrote:

> Thank you for the pointer to Carter-Wegman MACs.
>
> >>> This style of combing hash outputs does affect collision resistance
> [4], and some discussion on relation to that would be nice to see.
>
> That's an excellent point. In addition to pseudorandomness, we prove the
> collision-resistance of our construction. I.e., assuming that no unique
> value is used twice and assuming that HMAC is collision-resistance, then
> the final Expand operation guarantees unique outputs. I.e., by including
> the unique value into the final Expand operation after the xor, the
> construction recovers from any collisions incurred by the xor.
>
> Chris
> On 07/07/2020 05:41, Hale, Britta (CIV) wrote:
>
> This is an interesting proposal. It is closely related at a high level to
> Carter-Wegman MACs (i.e. for random seed r, MAC((k1, k2), m) =  PRF(k1, r)
> XOR MAC(k2, m)). Quite a few MACs fall into this category in practice.
> Considering the use of a MAC-based KDF and the proofs of [3] on DPRFs,
> there is an overlap between NPRFs and extrapolation of the above (based on
> iteration of the PRF guarantees).
>
>
>
> This is worth noting from an assurance standpoint: there was discussion at
> the virtual interims with respect to the current formulation of MLS key
> derivation, which has a “TLS precedence”, yet this proposal is not without
> precedence itself. Ergo, such a change should not necessarily be concerning
> based on differing from current practice.
>
>
>
> This style of combing hash outputs does affect collision resistance [4],
> and some discussion on relation to that would be nice to see.
>
>
>
> Britta
>
>
>
>
>
>
>
> [1] Carter, Wegman. Universal classes of hash functions.
>
> [2] Carter, Wegman. New hash functions and their use in authentication and
> set equality.
>
> [3] Bellare and Lysyanskaya. Symmetric and Dual PRFs from Standard
> Assumptions: A Generic Validation of an HMAC Assumption.
>
> [4] Bernstein. What output size resists collisions in a xor of
> independent expansions?
>
>
>
>
>
>
>
> *From: *MLS <mls-bounces@ietf.org> <mls-bounces@ietf.org> on behalf of
> Chris Brzuska <chris.brzuska@aalto.fi> <chris.brzuska@aalto.fi>
> *Date: *Tuesday, June 9, 2020 at 10:32 AM
> *To: *"mls@ietf.org" <mls@ietf.org> <mls@ietf.org> <mls@ietf.org>
> *Subject: *[MLS] Key Schedule: Replace DPRF with multi-input PRF (NPRF)
>
>
>
> Hi all,
>
> I would like to open a discussion on a suggestion for a change in the key
> schedule. In the current draft, we use the Extract function twice as a dual
> pseudorandom function (DPRF) when combining 3 keys (*) and interleave them
> with an Expand call.
>
> The suggestion [1] is to replace these 3 calls by a multi-input PRF (NPRF)
> which is especially designed to return a pseudorandom key when at least one
> of the input keys is pseudorandom. The new suggestion relies on standard
> PRF security rather than DPRF-security of Extract.
>
> You can find the accompanying paper with pictures, discussion and security
> reduction for the design principle here [2]. I include a summary of the
> main points in the end of this eMail.
>
> Please comment/share your opinion. Thanks!
>
> Chris
>
> (*) commit_secret, PSK and init_secret
>
> [1] Pull Request: https://github.com/mlswg/mls-protocol/pull/337
>
> [2] Paper: http://chrisbrzuska.de/2020-NPRF.html
>
>
> *--------------------------------------------------------------------------------------------------------------------*
>
> *Summary of main points:*
>
> The current key schedule
> - uses Extract as a dual pseudorandom function and assumes that HMAC is a
> dual pseudorandom function
> - applies Extract after Expand, i.e., after applying a function which
> generates a pseudorandom value
> - iterates Extract-then-Expand sequentially to combine more than 2 keys
>
> The pull request suggests to
> - replace the ad-hoc assumption that Extract is a dual pseudorandom
> function
> - remove Extract steps when applied after Expand
> - use a provably secure NPRF construction which allows to combine more
> than 2 keys and is based on a standard PRF assumption and statistical
> properties of xor.
>
> Efficiency:
> - The suggested construction has higher parallel efficiency. It increases
> the overall number of HMAC evaluations by 1.
>
> Assumptions:
> - HMAC is a standard PRF.
> - Relies on a unique value, the group_context was suggested.
>
> Construction:
> (1) Use unique value to expand each key and xor the result
> (2) expand resulting key, including unique value into the context again
>
> Security argument:
> - Pseudorandomness: unique value ensures that each outcome of Expand in
> (1) is used only once in a xor combination, thus allowing on one-time pad
> argument of xor.
> - Uniqueness of resulting keys: (2) ensures that if HMAC is
> collision-resistent, then the result is collision-resistent.
>
> Variants:
> - It is possible to use an NPRF variant called NameNPRF [2] which has 3
> HMAC evaluations more and relies less on the unique value. I.e., NameNPRF
> is secure in the same scenarios as DPRF: Keys only repeat if the input keys
> repeat *and* the group context repeats.
>
> Questions/Comments that came up:
> - Barnes, MacMillion suggested group_context as unique value
> - MacMillion wondered about removal of Extract: One can add an extract
> operation for the psk. For other input keys, it does not seem needed, since
> they were returned from Expand.
> - Wood: Can we replace HMAC by arbitrary PRF? Yes. For uniqueness of
> output keys, the PRF needs to be collision-resistant, too.
>
> _______________________________________________
> MLS mailing listMLS@ietf.orghttps://www.ietf.org/mailman/listinfo/mls
>
> _______________________________________________
> MLS mailing list
> MLS@ietf.org
> https://www.ietf.org/mailman/listinfo/mls
>