[Ietf-dkim] Re: New I-D: A Deployment Profile for DKIM2 via Milter Interface

Vittorio <v.moccia@itb.it> Sat, 18 April 2026 14:21 UTC

Return-Path: <v.moccia@itb.it>
X-Original-To: ietf-dkim@mail2.ietf.org
Delivered-To: ietf-dkim@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 79AC6DED4E36 for <ietf-dkim@mail2.ietf.org>; Sat, 18 Apr 2026 07:21:05 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1776522065; bh=PwoMkIaseIZRl+2mKStDHCXDvBWKTp2h4Ad58NhswgQ=; h=Date:From:To:Subject:Reply-To:In-Reply-To:References; b=xOb6lykr8ZKyrxBADyrFpfLw7WnaT55IGLrn390dL9zOgmra+qUHLd+cmNFZMlXj7 vph6wfPb5EOgkocpUePrUBELp0RasGgv1NKWvYfNPnO1ZaLVm280BIbMIDtUcQbjAS sJP5I5lxM9ogYnt5wiWbfUQCwYRfPPPvOXaMlOpc=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level:
X-Spam-Status: No, score=-2.098 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (1024-bit key) header.d=itb.it
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ctXzQ9NFsSTd for <ietf-dkim@mail2.ietf.org>; Sat, 18 Apr 2026 07:21:04 -0700 (PDT)
Received: from dns.itb.it (dns.itb.it [5.134.126.114]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id E8D85DED4E31 for <ietf-dkim@ietf.org>; Sat, 18 Apr 2026 07:21:03 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=itb.it; s=default; t=1776522063; bh=vaI0ILBmFBwc/rWUDeEorWsRvaPLF905C62CPIwOXq0=; h=Date:From:To:Subject:Reply-To:In-Reply-To:References:From; b=e8bXL/813zATsHp671JFxRgZGpA8eWfGZwxQ5d42zenTvb++cvAlUe41xQVH45Ui0 ltaULPKryM3wtftCcO9sMKaC+2N6usvsELZQ1SF1eNjTqh69I8FexBjssMm2xFwQO3 kGPO/Hx+UMCuA/d0WbEACnpayB8iBTwP2ZASCuJs=
Received: from mail.itb.it (localhost [127.0.0.1]) by dns.itb.it (8.18.1/8.18.1/Debian-6) with ESMTP id 63IEL2Qx3534170 for <ietf-dkim@ietf.org>; Sat, 18 Apr 2026 16:21:02 +0200
MIME-Version: 1.0
Date: Sat, 18 Apr 2026 16:21:02 +0200
From: Vittorio <v.moccia@itb.it>
To: Ietf Dkim <ietf-dkim@ietf.org>
Mail-Reply-To: v.moccia@itb.it
In-Reply-To: <wuCfdLBHe44pFAq1@highwayman.com>
References: <f57b6ebedadedc5f6dbdf07e2de5e824@itb.it> <CAL0qLwa9=WkyFF4QmscaG5p93pZso7g7oq5yp1zW=-t1sN9jCA@mail.gmail.com> <7b41024e-8155-4289-8150-54dc4dff1a87@inveigle.net> <CAL0qLwYHXd9b+JTOEtJMnJ4UUEhzh631+stPzpPOepW0vpGv0A@mail.gmail.com> <79ca14fb9642f590200989ecf86e12c5@itb.it> <CAL0qLwawxwJwkhsNtoC_ZYQ9g6w2L+Sy+qLC_eB0XqWP1CCQSA@mail.gmail.com> <f6dedd54b45376041ddbcc6df82aa705@itb.it> <b4bf2c35-9ee6-4818-96c8-75c93c07eccc@app.fastmail.com> <CAL0qLwZR5SGS=g5j_gnKB+D8Y3d0hXrmVSpoZVTqG+ACH8AHdQ@mail.gmail.com> <1d79f5afee229c3ff8c038cdfd290c12@itb.it> <e71d34a3-9d5f-47e2-af95-13927dbca90e@app.fastmail.com> <CACfBKehWCBuxXfR92dAMxJufYVfCWFCGi0zToQo8P6zn5ASVvQ@mail.gmail.com> <b0d6b4372f757076d53f6ef411ebe506@itb.it> <3P+OVUE3OY4pFApj@highwayman.com> <5e4a835b9bd9f60be82e0a25225f052b@itb.it> <zSzfCvEBEl4pFA47@highwayman.com> <d258ad06c0d9a7b64a0cf2cf919d2f07@itb.it> <wuCfdLBHe44pFAq1@highwayman.com>
Message-ID: <d015cb266ecdd7f791a72571d561a8f5@itb.it>
X-Sender: v.moccia@itb.it
Content-Type: text/plain; charset="US-ASCII"; format="flowed"
Content-Transfer-Encoding: 7bit
ARC-Authentication-Results: i=1; dns.itb.it; spf=none; dmarc=none; dkim=none; arc=none
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=itb.it; s=arc1; bh=vaI0ILBmFBwc/rWUDeEorWsRvaPLF905C62CPIwOXq0=; h=from:message-id:date:subject:to; b=Fs16DxTciPXITJStPpzXINnYIoXbWe3SfAuvjkRtmqugsY2mVWyASfeAdk3EwicoNo4EuWAEDo1m5T7MfCzpEkowVOzY5Eq0jjQLY++fqSzidjag/CXKh7h6E3X+b9NP+EnmbVfrS3/Ny5Bw5tJJeFO2qZWqXUnJnmTZ0xfJj9KK0T05QQwMAOKNq4KhMU4LGGgz0iC4J5T4/yo3HFiW9xcnKxZPNL9duMMhCP2KoZYJVoWVPm2WVbjlPFRhlSH8kj0efY1MteT/bmOBot1qxJcaXgwg0cVqOMw6Nuq9Xw7hM5c8LIMaQmF0IDN0xHeztJyOyuz+UWCN11k9V8pQ6A==
ARC-Seal: i=1; a=rsa-sha256; s=arc1; d=itb.it; cv=none; b=KM2JHg/6J5XMIyhceL6tF+BmmN5JEZLDjulmJvOyKWUPHzWoT2sscBP3mM7REyINs6Tth4/u5lD5Mc6BWZTCsqGvuAvn+qLnyN9BI0KZ6e/dKWd1PKwS9paFuFeEnkbbw4e9dtRrOkgy7GtccpIrvn0ECIVvDhCG5GiSqqksvFx+ks/jC4efKjJyZCKA//tRGed3jHShBlJKBNCzItiKk8WsfBVc+CokGk8Ui1FuPlGZG1Hvz6XzVaT8OOAwijacjUxvpcUovoXMRHWACG5pIuPbLA8Yy5wYKgC6pONdY70S0cIOLdBzY/t4u0Mshg26QHAKb5d6kreCxnKa3hEnjA==
X-Signed: DarkARC v0.3
Message-ID-Hash: USM7EUHN775G2WBMGSZIZFKJJ2EVU3WO
X-Message-ID-Hash: USM7EUHN775G2WBMGSZIZFKJJ2EVU3WO
X-MailFrom: v.moccia@itb.it
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-ietf-dkim.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.9rc6
Precedence: list
Reply-To: v.moccia@itb.it
Subject: [Ietf-dkim] Re: New I-D: A Deployment Profile for DKIM2 via Milter Interface
List-Id: IETF DKIM List <ietf-dkim.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/ietf-dkim/xV1zdgHUON1NEuIlnJ6BBVLsGm4>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ietf-dkim>
List-Help: <mailto:ietf-dkim-request@ietf.org?subject=help>
List-Owner: <mailto:ietf-dkim-owner@ietf.org>
List-Post: <mailto:ietf-dkim@ietf.org>
List-Subscribe: <mailto:ietf-dkim-join@ietf.org>
List-Unsubscribe: <mailto:ietf-dkim-leave@ietf.org>

Richard,
We are going in circles.
Your attack scenario assumes a node that does not verify the previous 
signature, which violates the core requirement of hop-by-hop 
verification in DKIM2-core. Under correct protocol operation the 
mismatch is detected and the message is rejected before it propagates.
You also argue that body recipes help identify a collusive node. But the 
chain of custody already identifies which domain changed the body hash 
without requiring reconstruction, without JSON, without state. That is 
attribution. Reconstruction is a separate property with a separate cost. 
The -02 draft documents this separation in detail.

Regards
Vittorio

Il 2026-04-18 15:30 Richard Clayton ha scritto:
> In message <d258ad06c0d9a7b64a0cf2cf919d2f07@itb.it>, Vittorio
> <v.moccia@itb.it> writes
> 
>>> The point of my example was to explain how, when bad people operate a
>>> protocol and do not do what they are supposed then good people can 
>>> draw
>>> incorrect conclusions about what has happened
>>> In particular my example showed how your proposal for verification 
>>> drew
>>> completely the wrong set of inferences as to what has happened:
>>> E concludes that C and D are bad and B is good -- whereas B is the 
>>> only
>>> entity to have altered the body, C and D did not change the body but 
>>> E
>>> incorrectly concludes that they did.
>> Bob changes the body, signs with the old bh= and downstream honest 
>> nodes
>> get blamed. But the scenario only works if the next honest node does 
>> not
>> verify Bob's signature against the body it receives. If Charlie
>> implements DKIM2 (Core) and verifies hop-by-hop, he detects the bh=
>> mismatch at Bob's signature and rejects.
> 
> yes of course
> 
>> If Charlie is a legacy node
>> that does not verify, the gap exists equally whether body recipes are
>> present or not, a legacy node will not generate recipes either.
> 
> you have changed the topic again ...
> 
> ... but in general if a "legacy node" does not change the body and does
> not add any header fields apart from Received (or perhaps some ARC or
> DKIM1 signatures) then the issue will be whether or not it has changed
> the RFC5321 parameters. Hence, one of those old-fashioned "backup MXs"
> that accepts email and forwards it when the main server comes back
> online is very likely to do nothing relevant in DKIM2 terms and so it
> will not matter that it does not understand DKIM2.
> 
> Large mailbox providers run various delay and forward systems inside
> their networks to deal with variations in load. These would also be
> "invisible" so far as DKIM2 receivers thereafter were concerned
> 
>> The remaining case is that Charlie is collusive. But a collusive node
>> can forge recipes just as easily as it can forge bh= values.
> 
> yes they can .. but it is possible for the ultimate receiver to
> determine the last machine in the chain which did any forgery and they
> can then cross that machine off their Christmas card list (or take any
> other action they deem appropriate going forward)
> 
>> Body
>> recipes do not help when the adversary controls a node in the chain,
> 
> No they do and I have just explained (yet again) why
> 
>> they only help when all nodes are honest and cooperating, which is the
>> same trust assumption you criticise in ARC.
> 
> my criticism of ARC is far wider than that
> 
>>> they will not be -- the devices you are concerned about operate at 
>>> the
>>> start and end of delivery paths
> 
> [we're now on the "null recipe" topic]
> 
>> In practice, the topology is *not* that clean. Enterprise security
>> gateways, DLP systems and antivirus proxies routinely sit between MX 
>> and
>> mailbox, not at the edge.
> 
> they are at "the edge" from the point of view of the wider Internet, 
> the
> clue is in the adjective "Enterprise" -- these devices are within the
> network of the entity receiving email from all and sundry.
> 
> That entity has purchased them and has contracts with the suppliers
> which will provide details of the relevant signing keys which can be
> provided to relevant MTAs with the instruction that they are to be
> unconditionally trusted.
> 
> - --
> richard @ highwayman . com                       "Nothing seems the 
> same
>                           Still you never see the change from day to 
> day
>                                 And no-one notices the customs slip 
> away"
>