[openpgp] Mailing lists

"Neal H. Walfield" <neal@walfield.org> Wed, 15 July 2015 14:05 UTC

Return-Path: <neal@walfield.org>
X-Original-To: openpgp@ietfa.amsl.com
Delivered-To: openpgp@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6216A1A9154 for <openpgp@ietfa.amsl.com>; Wed, 15 Jul 2015 07:05:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.149
X-Spam-Level: *
X-Spam-Status: No, score=1.149 tagged_above=-999 required=5 tests=[BAYES_50=0.8, HELO_EQ_DE=0.35, SPF_HELO_PASS=-0.001] autolearn=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 CNGbnwYBa3X9 for <openpgp@ietfa.amsl.com>; Wed, 15 Jul 2015 07:05:08 -0700 (PDT)
Received: from mail.dasr.de (mail.dasr.de [217.69.77.164]) by ietfa.amsl.com (Postfix) with ESMTP id 599621A9149 for <openpgp@ietf.org>; Wed, 15 Jul 2015 07:05:08 -0700 (PDT)
Received: from p5081366d.dip0.t-ipconnect.de ([80.129.54.109] helo=mail.huenfield.org) by mail.dasr.de with esmtpsa (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.76) (envelope-from <neal@walfield.org>) id 1ZFNJ1-0006iI-Fu for openpgp@ietf.org; Wed, 15 Jul 2015 14:05:03 +0000
Received: from grit.huenfield.org ([192.168.20.253]) by mail.huenfield.org with esmtps (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from <neal@walfield.org>) id 1ZFNIz-0001jO-9O for openpgp@ietf.org; Wed, 15 Jul 2015 16:05:03 +0200
Received: from ip6-localhost.huenfield.org ([::1] helo=grit.huenfield.org.walfield.org) by grit.huenfield.org with esmtp (Exim 4.84) (envelope-from <neal@walfield.org>) id 1ZFNIy-00076H-5G for openpgp@ietf.org; Wed, 15 Jul 2015 16:05:00 +0200
Date: Wed, 15 Jul 2015 16:05:00 +0200
Message-ID: <87bnfdldo3.wl-neal@walfield.org>
From: "Neal H. Walfield" <neal@walfield.org>
To: IETF OpenPGP <openpgp@ietf.org>
User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM/1.14.9 (Gojō) APEL/10.8 EasyPG/1.0.0 Emacs/24.4 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO)
MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue")
Content-Type: text/plain; charset="US-ASCII"
X-SA-Exim-Connect-IP: 192.168.20.253
X-SA-Exim-Mail-From: neal@walfield.org
X-SA-Exim-Version: 4.2.1 (built Mon, 26 Dec 2011 17:06:47 +0000)
X-SA-Exim-Scanned: Yes (on mail.huenfield.org)
Archived-At: <http://mailarchive.ietf.org/arch/msg/openpgp/GAIKx4Ud8CcB-D9uPodeGdQgoGc>
Subject: [openpgp] Mailing lists
X-BeenThere: openpgp@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "Ongoing discussion of OpenPGP issues." <openpgp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/openpgp>, <mailto:openpgp-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/openpgp/>
List-Post: <mailto:openpgp@ietf.org>
List-Help: <mailto:openpgp-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/openpgp>, <mailto:openpgp-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 15 Jul 2015 14:05:10 -0000

Hi,

Encrypted mailing lists are currently difficult to do securely and
easily.  Either they trade security for usability by reencrypting mail
or they trade usability for security by requiring each poster to keep
a local list of subscribers up to date.

I think many cases can be easily accommodated at the OpenPGP level.
My proposal is relatively informal.  This is because: I haven't
actually implemented it yet; I would like some feedback on the idea
before pursuing it further; and, I don't have any experience writing
RFCs.  If the community agrees that the approach is reasonable, I'll
be happy to draft a more formal specification / patch for 4880bis.

The basic idea is to publish the list of subscribes as an OpenPGP
message.  Concretely:

  To create a mailing list, the mailing list administrator generates a
  new key pair in the usual way.

  Associated with the key pair is a list of encryption keys
  (Public-Key Packet, tag 6, or Public-Subkey Packet, tag 14).  Each
  key may optionally be preceded by a user id (User ID packet, tag
  13).  This list is stored in a signature subpacket with a new
  subpacket type.

    The list may be encrypted to hide the subscriber list.  In this
    case, the list will be encrypted to the set of authorized posters
    (which may or may not be the same as the set of subscribers).  The
    session key is encrypted for each poster and is saved in a
    public-key encrypted session key packet as usual.

    Since it is useful to hide the list of posters, as an extension to
    the public-key encrypted session key packet specification, if the
    first 6 octets of the key id are 0 and the last two are not, then
    the last two octets specify the last two octets of the key's id.
    I call these are "practically hidden key ids".  They are
    practically hidden, because 16-bits does not provide enough
    information to identify a key (it's trivial to create a collision
    unlike with a 64-bit id) and thus plausible deniability is
    ensured.  The 16-bits are useful, because there are potentially
    thousands of posters to a mailing list and if the public-key
    encrypted session key packets all have hidden key ids, it could
    take a long time to find the appropriate packet.  The 16-bits are
    a simple filter that reduces decryption time by a factor of 2^16.

    Keyservers / export commands should only include the most recent
    valid version of this packet.

  The key may contain two optional uids.  The first uid contains an
  email address that forwards the email to all of the mailing list's
  subscribers.  This user id has the following comment: "mailing
  list".  If there is no valid user id with the comment "mailing list"
  then the MUA should send the email to all of the UIDs listed in the
  encryption key list.  The second uid contains the email address of
  the list's owner.  It should have the following comment: "mailing
  list: owner".
  
  When encrypting, the implementation should make sure that the key is
  fresh.  It could do this by automatically downloading the key from a
  key server or, if the key hasn't been updated in the last 24 hours,
  by issuing a warning.

Thanks!

:) Neal