Re: [ietf-822] A permission to re-sign header

Alessandro Vesely <vesely@tana.it> Fri, 18 April 2014 12:17 UTC

Return-Path: <vesely@tana.it>
X-Original-To: ietf-822@ietfa.amsl.com
Delivered-To: ietf-822@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id CA7411A01BB for <ietf-822@ietfa.amsl.com>; Fri, 18 Apr 2014 05:17:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.094
X-Spam-Level:
X-Spam-Status: No, score=-2.094 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HELO_EQ_IT=0.635, HOST_EQ_IT=1.245, J_CHICKENPOX_18=0.6, RCVD_IN_DNSWL_MED=-2.3, RP_MATCHES_RCVD=-0.272, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham
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 2Xf3wnngBPlG for <ietf-822@ietfa.amsl.com>; Fri, 18 Apr 2014 05:17:15 -0700 (PDT)
Received: from wmail.tana.it (www.tana.it [62.94.243.226]) by ietfa.amsl.com (Postfix) with ESMTP id 213341A01A8 for <ietf-822@ietf.org>; Fri, 18 Apr 2014 05:17:14 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tana.it; s=beta; t=1397823429; bh=kZzRR9qFq9S/o+HoY9JJdSowbdBICrLW7Kq2pVLpJYQ=; l=3359; h=Date:From:To:References:In-Reply-To; b=nlRpYAJ2Ng70GJWN21ETwxGcqTDO8jWMLgGUFrZ7v9SanDojldZE2ZOo7HQ12moRG AvAtr9BhAuHwsDWVnOPNpgySdYK8la3L1OUcZ/dmKMGLSbcxQTjVdOFjQaxB0Jt/1V nPaC+UnD5uyuNgCPHmZLwtnOfpwm60Qo4cZbuPz4=
Authentication-Results: tana.it; auth=pass (details omitted)
Received: from [172.25.197.88] (pcale.tana [172.25.197.88]) (AUTH: CRAM-MD5 uXDGrn@SYT0/k) by wmail.tana.it with ESMTPA; Fri, 18 Apr 2014 14:17:09 +0200 id 00000000005DC035.00000000535117C5.00006550
Message-ID: <535117C5.9040403@tana.it>
Date: Fri, 18 Apr 2014 14:17:09 +0200
From: Alessandro Vesely <vesely@tana.it>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20131103 Icedove/17.0.10
MIME-Version: 1.0
To: ietf-822@ietf.org
References: <20140418021925.2979.qmail@joyce.lan>
In-Reply-To: <20140418021925.2979.qmail@joyce.lan>
X-Enigmail-Version: 1.6
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Archived-At: http://mailarchive.ietf.org/arch/msg/ietf-822/k_6LeXKpFwjPRPljyxvGBwJwd3w
Subject: Re: [ietf-822] A permission to re-sign header
X-BeenThere: ietf-822@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "Discussion of issues related to Internet Message Format \[RFC 822, RFC 2822, RFC 5322\]" <ietf-822.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ietf-822>, <mailto:ietf-822-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/ietf-822/>
List-Post: <mailto:ietf-822@ietf.org>
List-Help: <mailto:ietf-822-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ietf-822>, <mailto:ietf-822-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 18 Apr 2014 12:17:20 -0000

Hi John,

On Fri 18/Apr/2014 04:19:25 +0200 John Levine wrote:
> As I understand it, the original sender puts a hard to forge single
> use token in the message, which the forwarder can include in the
> signed message.
> 
> Since I am lazy, I will reuse DKIM key records and invent a new
> May-Resign header something like this:
> 
> May-Resign: f=marissam@yahoo.com; r=ietf.org; s=foo; a=rsa-sha256; \
>    t=1397786669; b=hashhashhash
> 
> This is a permission to re-sign for a message From:
> marissam@yahoo.com, to be re-signed by a mailing list at ietf.org. The
> s= and a= and t= are the same as DKIM, the b= is a signature of a hash
> of the M-R header, similar to the b= signature in a DKIM-Signature.
> 
> The relay includes the M-R header in the DKIM signature.  So now
> we modify DMARC to say that
> 
> IF there is a M-R header with f= that matches the From: line address,
> 
> AND the M-R header is included in a DKIM signature that is signed with
> d= that matches the M-R r=
> 
> AND the M-R signature validates using the s= selector and f= domain
> 
> AND the t= isn't too old (for some meaning of too old)

The difference from the Date: is interesting too, since the latter
field is often visible and signed.

> THEN the message is considered to be aligned.
> 
> Is that the general idea?

Even with the local part (marissam) an M-R is not really hard to
forge, otherwise DKIM-Signature wouldn't have had to include all the
other tags.  If we worry about replay attacks, we can enhance M-R so
that it includes them too.  For example, we could make M-R exactly
like a regular DKIM-Signature, except that it would be a very very
weak one, something that the MLM won't break.  Oh, and of course we
have r=, but then its content could live in its own field.  With such
changes M-R would become quite similar to the joint signatures idea
(http://tools.ietf.org/html/draft-vesely-dkim-joint-sigs-00).

An obvious advantage of following the DKIM specs exactly is to save
developing extra code.  Another advantage is that end receivers who
ignore M-R will just see a valid author signature.  For example, this
message likely passes DMARC validation.

> You could put an M-R header on anything, but if you want to limit it
> to mail to addresses that claim to be mailing lists, you could use the
> same name convention as the DANE S/MIME draft, with hashed mailboxes,
> e.g.:
> 
> <hash of ietf-822>._mayresign.ietf.org TXT "v=MR1; d=ietf.org"
> 
> That says the ietf-822@ietf.org list is signed with d=ietf.org.  If a
> domain contains only mailing lists, you can use a wildcard
> 
> *._mayresign.lists.iecc.com TXT "v=MR1; d=lists.iecc.com"

I'd add fields that won't be modified.  For example:

   v=MR1; d=ietf.org; h=Date:From:To:References:In-Reply-To;

Another tag could be used to say what to do with content, if it will
be fine to sign it using l=original length, or l=0.  The directive for
l= may need to differ depending on the Content-Type (text/plain or
MIME multipart).

Lazy submission servers could stick to the least common signing
directives instead of separately signing each copy of an outgoing
message, in case there are multiple mailing lists among the
recipients.  BTW, would it make sense to mandate some simple
heuristic, for example $addr=~/list/, to save DNS queries?

Ale