[Cfrg] A different approach to key escrow

Phillip Hallam-Baker <phill@hallambaker.com> Mon, 02 September 2019 21:20 UTC

Return-Path: <hallam@gmail.com>
X-Original-To: cfrg@ietfa.amsl.com
Delivered-To: cfrg@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 57F7812022C for <cfrg@ietfa.amsl.com>; Mon, 2 Sep 2019 14:20:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.4
X-Spam-Level:
X-Spam-Status: No, score=-1.4 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=no autolearn_force=no
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 QYEmuP-kGl8D for <cfrg@ietfa.amsl.com>; Mon, 2 Sep 2019 14:20:40 -0700 (PDT)
Received: from mail-oi1-f169.google.com (mail-oi1-f169.google.com [209.85.167.169]) (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 D947A1201A3 for <cfrg@irtf.org>; Mon, 2 Sep 2019 14:20:39 -0700 (PDT)
Received: by mail-oi1-f169.google.com with SMTP id a127so11258964oii.2 for <cfrg@irtf.org>; Mon, 02 Sep 2019 14:20:39 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=o0plS9kcB0EyY+Q2aGR7HN/2gyh28jQNqomQTolsBcc=; b=lQLQTvkiIXtsZzscEpuYFF5zbvfAk7KnhgsYcq4IQbqFEfuA3F4rra9MIugNrYVrxM Yn0Utg4gb+QW2T9DAXmUAZsDsdsqwRqV69gGN4jgU6f1eebQWGY8yxG/4SHsomyfMkL0 3u+Q155nAkQJ3xYTPoHwPBLB2QAI46XDxk9X0PicuGm9wZJcVrw3kLn3Kmt0RNAY9iig GE7yfjNze97PIncwJRx+xUEC4qIiM/L/E/BEeF6x5sKaPc+h4mAxk18FY4RhCIFEO42h c/SoZkmC7sQ3A6RBIc8UuQc24AVKHrbJPdafkcY0Xwzz3wzlfGzOKg8cniX1+ZB5fm9a wJRQ==
X-Gm-Message-State: APjAAAW8gXiuLU+BSg8VhVjyuHk8694yanEJWP7DHsNF7somoMHHY960 zC6/YzwSEE7QpNMg1H1esQNWSjSky5+jy9TJWgk=
X-Google-Smtp-Source: APXvYqwMnqqKkDdxZEYHdmN1heZrXBpO/tz56BNAOCjP6trlNBQboIkSCkDW7BjKhg9o8H0dEJirAeTowvyddMsEOzc=
X-Received: by 2002:aca:782:: with SMTP id 124mr20768285oih.95.1567459239076; Mon, 02 Sep 2019 14:20:39 -0700 (PDT)
MIME-Version: 1.0
From: Phillip Hallam-Baker <phill@hallambaker.com>
Date: Mon, 02 Sep 2019 17:20:30 -0400
Message-ID: <CAMm+LwiZqA=M90YdmQOV+sAy+T-prhzphct2bsOyPmaQ4V2oOA@mail.gmail.com>
To: mathmesh@ietf.org, cfrg@irtf.org
Content-Type: multipart/alternative; boundary="000000000000252a0c0591988bd2"
Archived-At: <https://mailarchive.ietf.org/arch/msg/cfrg/49zBvOacpXMsHR3w3duw4mDo5C8>
Subject: [Cfrg] A different approach to key escrow
X-BeenThere: cfrg@irtf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Crypto Forum Research Group <cfrg.irtf.org>
List-Unsubscribe: <https://www.irtf.org/mailman/options/cfrg>, <mailto:cfrg-request@irtf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/cfrg/>
List-Post: <mailto:cfrg@irtf.org>
List-Help: <mailto:cfrg-request@irtf.org?subject=help>
List-Subscribe: <https://www.irtf.org/mailman/listinfo/cfrg>, <mailto:cfrg-request@irtf.org?subject=subscribe>
X-List-Received-Date: Mon, 02 Sep 2019 21:20:52 -0000

[ccd to CFRG for comment]

At the moment, the approach used to escrow Mesh keys is

* Generate a master secret of at least 128 bits
* Use the master secret to derive an AES 256 encryption key and
initialization vector under which the private key information is encrypted.
* Use a content digest of the master secret as the identifier under which
the escrow record is stored on some sort of service (TBS).
* Use Shamir secret sharing to split the master secret  n out of m ways

This works with any public key algorithm but it requires a service. It has
since occurred to me that I may have gone down a blind alley because I
designed this part of the system back when RSA was still the default
algorithm (we were discussing the CFRG curves at the time). I am now
thinking about using this approach:

* Generate a master secret of at least 128 bits
* Use a KDF to generate the master key pairs for Encryption and Signature
from the master secret
* Use Shamir secret sharing to split the master secret  n out of m ways

Thoughts?

One side benefit of this approach is that it becomes quite easy to give
test vectors, just give the master secret used to generate the key pairs.

I know 128 bits is short, my preference is for 256 bits. But given the
number of times this ends up going through SHA-2-512, I am not really
worried.