[lamps] Common Protected Header practice documented (was "Memory Hole")

Daniel Kahn Gillmor <dkg@fifthhorseman.net> Mon, 04 November 2019 21:07 UTC

Return-Path: <dkg@fifthhorseman.net>
X-Original-To: spasm@ietfa.amsl.com
Delivered-To: spasm@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id CC25012002E for <spasm@ietfa.amsl.com>; Mon, 4 Nov 2019 13:07:10 -0800 (PST)
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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=neutral reason="invalid (unsupported algorithm ed25519-sha256)" header.d=fifthhorseman.net header.b=gWubMUQC; dkim=pass (2048-bit key) header.d=fifthhorseman.net header.b=V52c6/xB
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 RzbXnG0J1bSB for <spasm@ietfa.amsl.com>; Mon, 4 Nov 2019 13:07:08 -0800 (PST)
Received: from che.mayfirst.org (che.mayfirst.org [IPv6:2001:470:1:116::7]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A23491200CD for <spasm@ietf.org>; Mon, 4 Nov 2019 13:07:08 -0800 (PST)
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/simple; d=fifthhorseman.net; i=@fifthhorseman.net; q=dns/txt; s=2019; t=1572901627; h=from : to : subject : date : message-id : mime-version : content-type : from; bh=ntB+jlkn0ZpCWobd2+zTABMO6DA+vmPs5xnbnNPikMI=; b=gWubMUQC2/g4x8sD58O1kwiDsNV7ek4U1zu8FDr1GkObCXW24oIngq1K C76QGGue29wPyMB6Lsfsg8oFhiHdAg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fifthhorseman.net; i=@fifthhorseman.net; q=dns/txt; s=2019rsa; t=1572901627; h=from : to : subject : date : message-id : mime-version : content-type : from; bh=ntB+jlkn0ZpCWobd2+zTABMO6DA+vmPs5xnbnNPikMI=; b=V52c6/xBrDgcW5vPtMehAa7oyoBbM0pPIB4IEFzGdGdAFifKtOoldBW6 jojIh14mbtBOxzxdFiUvGknDC1n2Mz3oVlqYYpljSv5OEffKkcAY003ymj iWsfMwjO666he+cx01VryvY1jS9lI96si9RHZbA7IIrdefCL/cLT1r4VMT 0RPk8KkUfhHMgpTCywApeP1m9uJRBJcJLi98z7BVI3/pFOUNPMI0jDozFA VbwnbsPST0hOv81xpNaUPUw1MSrJZssUKtQXNB0055Z0lw9IwiQNHoPBgy 3z5Eg4ii/uVKZVr90Nr1gws8RZZ2nZb/GkX8/KV5F6o1C7aKAQV5Ig==
Received: from fifthhorseman.net (unknown [38.109.115.130]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by che.mayfirst.org (Postfix) with ESMTPSA id 8A974F9A5 for <spasm@ietf.org>; Mon, 4 Nov 2019 16:07:06 -0500 (EST)
Received: by fifthhorseman.net (Postfix, from userid 1000) id CC48220403; Mon, 4 Nov 2019 16:07:03 -0500 (EST)
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
To: IETF LAMPS WG <spasm@ietf.org>
Autocrypt: addr=dkg@fifthhorseman.net; prefer-encrypt=mutual; keydata= mDMEXEK/AhYJKwYBBAHaRw8BAQdAr/gSROcn+6m8ijTN0DV9AahoHGafy52RRkhCZVwxhEe0K0Rh bmllbCBLYWhuIEdpbGxtb3IgPGRrZ0BmaWZ0aGhvcnNlbWFuLm5ldD6ImQQTFggAQQIbAQUJA8Jn AAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBMS8Lds4zOlkhevpwvIGkReQOOXGBQJcQsbzAhkB AAoJEPIGkReQOOXG4fkBAO1joRxqAZY57PjdzGieXLpluk9RkWa3ufkt3YUVEpH/AP9c+pgIxtyW +FwMQRjlqljuj8amdN4zuEqaCy4hhz/1DbgzBFxCv4sWCSsGAQQB2kcPAQEHQERSZxSPmgtdw6nN u7uxY7bzb9TnPrGAOp9kClBLRwGfiPUEGBYIACYWIQTEvC3bOMzpZIXr6cLyBpEXkDjlxgUCXEK/ iwIbAgUJAeEzgACBCRDyBpEXkDjlxnYgBBkWCAAdFiEEyQ5tNiAKG5IqFQnndhgZZSmuX/gFAlxC v4sACgkQdhgZZSmuX/iVWgD/fCU4ONzgy8w8UCHGmrmIZfDvdhg512NIBfx+Mz9ls5kA/Rq97vz4 z48MFuBdCuu0W/fVqVjnY7LN5n+CQJwGC0MIA7QA/RyY7Sz2gFIOcrns0RpoHr+3WI+won3xCD8+ sVXSHZvCAP98HCjDnw/b0lGuCR7coTXKLIM44/LFWgXAdZjm1wjODbg4BFxCv50SCisGAQQBl1UB BQEBB0BG4iXnHX/fs35NWKMWQTQoRI7oiAUt0wJHFFJbomxXbAMBCAeIfgQYFggAJhYhBMS8Lds4 zOlkhevpwvIGkReQOOXGBQJcQr+dAhsMBQkB4TOAAAoJEPIGkReQOOXGe/cBAPlek5d9xzcXUn/D kY6jKmxe26CTws3ZkbK6Aa5Ey/qKAP0VuPQSCRxA7RKfcB/XrEphfUFkraL06Xn/xGwJ+D0hCw==
Date: Mon, 04 Nov 2019 16:07:03 -0500
Message-ID: <87ftj3pczs.fsf@fifthhorseman.net>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=-=-="; micalg="pgp-sha256"; protocol="application/pgp-signature"
Archived-At: <https://mailarchive.ietf.org/arch/msg/spasm/RGVzTkNMCTv9vrUOSGy7vG-8GpA>
Subject: [lamps] Common Protected Header practice documented (was "Memory Hole")
X-BeenThere: spasm@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "This is a venue for discussion of doing Some Pkix And SMime \(spasm\) work." <spasm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/spasm>, <mailto:spasm-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/spasm/>
List-Post: <mailto:spasm@ietf.org>
List-Help: <mailto:spasm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/spasm>, <mailto:spasm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 04 Nov 2019 21:07:11 -0000

Hey LAMPS folks--

At (and shortly after) the OpenPGP e-mail summit [0], a group of MUA
developers went ahead and documented the way that several of us have
been handling header protection in a backward-compatible way.

This bundle of techniques used to be known as "Memory Hole" a while back
but for a couple years now we've been calling it just "Protected
Headers", since "Memory Hole" was confusing and weird for some people.

Hopefully this document can serve as input for appendix A.1.1 of
draft-ietf-lamps-header-protection-requirements-01 [1].

The new draft is at:

    https://datatracker.ietf.org/doc/draft-autocrypt-lamps-protected-headers/

(it's "draft-autocrypt-…" because it's not a single-person draft, and
because most of the experience we have in this comes from
implementations actively engaged in the Autocrypt project [2]. But it is
not a formal part of the Autocrypt specifications at this time, and it
is not intended to ever be limited to Autocrypt implementations.)

To whet your appetite, the summary:

-------
   The Protected Headers scheme relies on three backward-compatible
   changes to a cryptographically-protected e-mail message:

   *  Headers known to the composing MUA at message composition time are
      (in addition to their typical placement as Exposed Headers on the
      outside of the message) also present in the MIME header of the
      root of the Cryptographic Payload.  These Protected Headers share
      cryptographic properties with the rest of the Cryptographic
      Payload.

   *  When the Cryptographic Envelope includes encryption, any Exposed
      Header MAY be _obscured_ by a transformation (including deletion).

   *  If the composing MUA intends to obscure any user-facing headers,
      it MAY add a decorative "Legacy Display" MIME part to the
      Cryptographic Payload which additionally duplicates the original
      values of the obscured user-facing headers.

   When a composing MUA encrypts a message, it SHOULD obscure the
   "Subject:" header, by using the literal string "..." (three U+002E
   FULL STOP characters) as the value of the exposed "Subject:" header.

   When a receiving MUA encounters a message with a Cryptographic
   Envelope, it treats the headers of the Cryptographic Payload as
   belonging to the message itself, not just the subpart.  In
   particular, when rendering a header for any such message, the
   renderer SHOULD prefer the header's Protected value over its Exposed
   value.

   A receiving MUA that understands Protected Headers and discovers a
   Legacy Display part SHOULD hide the Legacy Display part when
   rendering the message.
-------

Please don't be put off by the draft length -- nearly half of the
document consists of test vectors that implementers can use to verify
their ability to consume well-formed, protected-header messages.

I'd be happy to present this work in Singapore if there's space on the
agenda.

Feedback, critiques, comments, etc, are all welcome.

Regards,

        --dkg

[0] https://wiki.gnupg.org/OpenPGPEmailSummit201910
[1] https://tools.ietf.org/html/draft-ietf-lamps-header-protection-requirements-01#appendix-A.1.1
[2] https://autocrypt.org/