MessageID wording paranoia

Thomas Roessler <roessler@guug.de> Wed, 25 March 1998 15:56 UTC

Received: (from majordomo@localhost) by mail.proper.com (8.8.8/8.7.3) id HAA28995 for ietf-open-pgp-bks; Wed, 25 Mar 1998 07:56:17 -0800 (PST)
Received: from riemann.iam.uni-bonn.de (root@riemann.iam.uni-bonn.de [131.220.223.83]) by mail.proper.com (8.8.8/8.7.3) with ESMTP id HAA28988 for <ietf-open-pgp@imc.org>; Wed, 25 Mar 1998 07:56:12 -0800 (PST)
Received: (from uucp@localhost) by riemann.iam.uni-bonn.de (8.8.8/8.8.5) with UUCP id QAA13776 for ietf-open-pgp@imc.org; Wed, 25 Mar 1998 16:51:52 +0100
Received: (from roessler@localhost) by sobolev.rhein.de (8.8.8/8.8.8) id PAA21108 ; Wed, 25 Mar 1998 15:45:03 +0100
Message-ID: <19980325154503.A20867@sobolev.rhein.de>
Date: Wed, 25 Mar 1998 15:45:03 +0100
From: Thomas Roessler <roessler@guug.de>
To: ietf-open-pgp@imc.org
Subject: MessageID wording paranoia
Mail-Followup-To: ietf-open-pgp@imc.org
Mime-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 8bit
X-Mailer: Mutt 0.90.11i
Sender: owner-ietf-open-pgp@imc.org
Precedence: bulk

The current draft states the following on the generation
of Message-IDs:

>    - "MessageID", a 32-character string of printable
>    characters.  The string must be the same for all parts of
>    a multi-part message that uses the "PART X" Armor Header.
>    MessageID strings should be unique enough that the
>    recipient of the mail can associate all the parts of a
>    message with each other.  A good checksum or cryptographic
>    hash function is sufficent.

>    The MessageID should not appear unless it is in a
>    multi-part message. If it appears at all, it MUST be
>    computed from the message in a deterministic fashion,
>    rather than contain a purely random value.  This is to
>    allow anyone to determine that the MessageID cannot serve
>    as a covert means of leaking cryptographic key
>    information.

I consider this to be a dangerous approach, since it may
let _plaintext_ information leak to the public: Consider
some (broken) implementation using an SHA1 hash of the
message - to "prove" that some suspected plaintext is
actually the one you have, you only need to have a look at
the Message ID.

Even worse, an implementation which uses some part of the
plain text, encrypted with a symmetric algorithm, could
use this stuff to leak known plaintext while still being
compliant to the standard, while an implementation using
random values would _not_ comply.

As a solution, I'd suggest to mandate the use of a certain
hash (sha1?) of the armored text, i.e., the _encrypted_
message. (Most probably it's meant that way, but let's
make the text unambiguous.)

tlr
-- 
Thomas Roessler · 74a353cc0b19 · dg1ktr · http://home.pages.de/~roessler/
     2048/CE6AC6C1 · 4E 04 F0 BC 72 FF 14 23 44 85 D1 A1 3B B0 73 C1