Re: [Mathmesh] A different approach to key escrow

Michael Richardson <> Wed, 04 September 2019 06:46 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id C72C11200CE for <>; Tue, 3 Sep 2019 23:46:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.899
X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id F5cG9Iksk-mO for <>; Tue, 3 Sep 2019 23:46:35 -0700 (PDT)
Received: from ( [IPv6:2a01:7e00::f03c:91ff:feae:de77]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 975C81200C3 for <>; Tue, 3 Sep 2019 23:46:35 -0700 (PDT)
Received: from (unknown []) by (Postfix) with ESMTPS id A92711F45A; Wed, 4 Sep 2019 06:46:33 +0000 (UTC)
Received: by (Postfix, from userid 179) id 61688FE9; Wed, 4 Sep 2019 02:47:07 -0400 (EDT)
From: Michael Richardson <>
To: Phillip Hallam-Baker <>
In-reply-to: <>
References: <> <6241.1567487279@localhost> <>
Comments: In-reply-to Phillip Hallam-Baker <> message dated "Tue, 03 Sep 2019 10:51:11 -0400."
X-Mailer: MH-E 8.6; nmh 1.6; GNU Emacs 24.5.1
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature"
Date: Wed, 04 Sep 2019 02:47:07 -0400
Message-ID: <>
Archived-At: <>
Subject: Re: [Mathmesh] A different approach to key escrow
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 04 Sep 2019 06:46:38 -0000

Phillip Hallam-Baker <>; wrote:
    > OK so here is the difference.

okay, thank you.
I didn't realize the "done now" version encrypted the private keys like that.
I assumed in my brain that it would always be the KDF version :-)

> Escrow Key = HKDF ( [97 BE C3 8C EC 32 E3 A8 14 BE 38 AC 49 B3 58 D0],
> "mmm/mesh-escrow/X448", 448) 
>So now recovery of the escrow record ONLY requires the master secret
>ECL3-5Q4M-5QZO-HKAU-XY4K-YSNT-LDIA. There is no encrypted escrow record.

I'm confused here.  Isn't the private key is deterministically created from the
master key, why do we need an escrow key?   Won't the key need to be numbered
so that one knows which of potentially many pieces are generated? Or is
there a master key for each key that Alice needs to generate?

    > Pros: More convenient.  Cons: The private keys have less ergodicity and
    > are related by means of the HMAC function.

I think that it's okay for the reasons you gave.

Nico Williams <>; wrote:
    > I don't see why in the first case you'd need a separate service to
    > store the private keys encrypted in the master secret.  All the
    > entities that hold secret shares can also hold copies of the encrypted
    > record along with the secret shares.

This allows the secrets to split and sent to appropriate entities once at the
beginning of the process, and they never need to be updated again.  Alice
can generate as many keys (and as frequently) as she wishes, interacting only
with the escrow service.  Assuming that I understand correctly.

    > However, you might find it difficult to generate key pairs from a
    > master secret, especially if you ever need to generate keys on a
    > hardware token.  If you won't have that requirement, and if you're
    > willing to have that as an anti-requirement, then the second scheme is
    > simpler, indeed, and the entities that store key shares will need to
    > store smaller records.

You are saying: If you use a hardware token, then you need the escrow service.
Isn't it the case that some hardware tokens have no mechanism to get the
private key out?  I guess they are SOL regardless of scheme.

Couldn't we generate per-key escrow keys from the master key using
the same KDF mechanism?  Doesn't that get us the best of both worlds,
with the confusion as to how the different 

]               Never tell me the odds!                 | ipv6 mesh networks [ 
]   Michael Richardson, Sandelman Software Works        | network architect  [ 
]        |   ruby on rails    [