
From nobody Thu Dec 14 02:27:25 2017
Return-Path: <eranm@google.com>
X-Original-To: trans@ietfa.amsl.com
Delivered-To: trans@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id CDD401267BB for <trans@ietfa.amsl.com>; Thu, 14 Dec 2017 02:27:23 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.699
X-Spam-Level: 
X-Spam-Status: No, score=-2.699 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=google.com
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 dw1JLNwBochM for <trans@ietfa.amsl.com>; Thu, 14 Dec 2017 02:27:20 -0800 (PST)
Received: from mail-it0-x235.google.com (mail-it0-x235.google.com [IPv6:2607:f8b0:4001:c0b::235]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 816EF124217 for <trans@ietf.org>; Thu, 14 Dec 2017 02:27:20 -0800 (PST)
Received: by mail-it0-x235.google.com with SMTP id d137so9976172itc.2 for <trans@ietf.org>; Thu, 14 Dec 2017 02:27:20 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=cQENcBxDj78lKprRabsGH97zwaxqf1b/XFStN2Cq7Kk=; b=nzhCjZdJkl/ezontjbAS+4YJqaspwOsZfD/1t/MqQI7bsH++7RrzdzWe700Zs8DiQf XXbv++YwYzLbVqSDbWzlPW6QdF9Tw/CEeU1MuwuK8kxEVknSs8nGs+Z//iWsYwf6Flyh O8aDuPRb2N1Xd+xvT6edkoCX3HtVe1Eg889qGDIBP+fUiXj77QZYb/kROK0iEX8KqKHf qZ1p9Dk5gCVN0rEmfTdaHApRExgDTXRd0T7tmTWdOqevst2/cqzphcL7uo6LwsZ2X46j fb/fFZwOdP0EMrsHiHltoiXcIb7ptbuGzn7wC9ibl2UsyAspz/jU0CdR7ksCuU3U7PIA obIA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=cQENcBxDj78lKprRabsGH97zwaxqf1b/XFStN2Cq7Kk=; b=hFw0iQ0uoLo15A1Hya82VyfKCPqkf01uGFgWaLfjZWpptbGdFVB2n5vy4XjCZTD+wM fwNHpfL+whS+4zWs84VyUO7Smgb7BGufMfeNpRirs+KHIHQN0tpIjCrC6+5EOoOh3IMj fLu33MJOoBPFYGXuUyslHVMwc+Zw9+0k92WpJ/C8UkbKgxLjfVVclvIdw/pKCgP5nFCJ jNSZDLGkbSAzjGSAJtZyN4uLkcPX/L8auVboMggRMRHM8QVU8c+faUMcdcAj473b9BTn ILi82VGekgGWpKR/SCQYlio1Jen4cKeFBFgFqTWB/izi/lRHXa2/x9QIlmT5lykMW4nr X/fQ==
X-Gm-Message-State: AKGB3mK2+zbPeAqSIr9qQV25Aet6r4+fqP6bje08/Rzt7xh3GlFCMb27 4Jpe80Vh81Zd+04EBVM5+dP28h1GVhaakWSkY0n9Xw==
X-Google-Smtp-Source: ACJfBovJdL42i37fY85ucx3kNI15s0myAlM+bUErz/8A97A/eZlK5c6gah/tigoRdVQDO8rbFF7wGzN2g+MDpeczSw0=
X-Received: by 10.36.39.8 with SMTP id g8mr2993801ita.42.1513247239277; Thu, 14 Dec 2017 02:27:19 -0800 (PST)
MIME-Version: 1.0
Received: by 10.107.222.3 with HTTP; Thu, 14 Dec 2017 02:26:48 -0800 (PST)
In-Reply-To: <CABcZeBNafvFdEA6ZEotad1VWUb9a0PLf8-etw1wR-ppnxB7Gww@mail.gmail.com>
References: <CALzYgEcnUe=0=vE9sw4Ee0H_94w6mv5F2=T-1rtK51WHHeqUbg@mail.gmail.com> <CACM=_OcS2zvQ1O_-YqiNFOg9PYn=jATp6dMmp6qS-maQMtoOOQ@mail.gmail.com> <f284f289-0468-5b2f-f073-2b3022158ea0@comodo.com> <CABcZeBNafvFdEA6ZEotad1VWUb9a0PLf8-etw1wR-ppnxB7Gww@mail.gmail.com>
From: Eran Messeri <eranm@google.com>
Date: Thu, 14 Dec 2017 10:26:48 +0000
Message-ID: <CALzYgEd7TzMNa=+FkTMDapET9Bsu3vn3QPxLQTje9qF=CUxk1w@mail.gmail.com>
To: Eric Rescorla <ekr@rtfm.com>
Cc: Rob Stradling <rob.stradling@comodo.com>, Al Cutter <al@google.com>, Trans <trans@ietf.org>
Content-Type: multipart/alternative; boundary="001a1147c5ac28449c05604a544e"
Archived-At: <https://mailarchive.ietf.org/arch/msg/trans/3-oxmcPTJQYGS5_wUqAa_3z7R3A>
Subject: Re: [Trans] Section 4.2 follow-up
X-BeenThere: trans@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Public Notary Transparency working group discussion list <trans.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/trans>, <mailto:trans-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/trans/>
List-Post: <mailto:trans@ietf.org>
List-Help: <mailto:trans-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/trans>, <mailto:trans-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 14 Dec 2017 10:27:24 -0000

--001a1147c5ac28449c05604a544e
Content-Type: text/plain; charset="UTF-8"

To follow up on some of the points raised in the issue:

Examples of chains that are allowed under the current text:
* RFC5280-compliant leaf -> intermediate -> trust anchor.
* RFC5280-compliant leaf -> intermediate -> TA, where the leaf or one of
the intermediate are revoked or not temporally valid (I don't know of any
logs that do revocation checking currently).
* Non RFC5280-compliant leaf (for example, BER-encoded instead of DER
encoded) -> intermediate -> TA.
* leaf -> intermediate1 -> intermediate2 without the trust anchor (however
when the log stores and serves the chain it must serve the trust anchor
used to accept the submission).

Examples of chains that are not allowed:
(1) Incomplete chain: leaf -> intermediate1 , missing intermediate2 ->
trust anchor.
(2) leaf -> intermediate -> trust anchor _not trusted by the log_.
(3) leaf -> intermediate -> trust anchor, where the signatures either by
the intermediate or the TA do not validate.

In PR289 <https://github.com/google/certificate-transparency-rfcs/pull/289>,
the suggestion was to change the MUST restricting chains (2), (3) from
being admitted at all, to a SHOULD, so such chains may be admitted under
some circumstances (that is, AFAIUI, the meaning of SHOULD in RFC2119).

The arguments were:
* Chrome CT policy requires CT logs to be RFC compliant.
* A bug in a CT log implementation could lead to accepting a submission
that doesn't chain to a trust anchor accepted by the root.
* Such a bug would make the CT log non RFC-compliant, and so subject to
removal from the set of logs trusted by Chrome.

I do not think this is a strong argument in favour of these changes because:
* The Chrome CT policy can be changed to accommodate some deviations from
the standard (Chrome's policy is dynamic and may change at any time).
* There have been cases where a log incorrectly accepted chains that do not
terminate in an accepted TA (Rob Stradling has found at least one). In
those cases the log was not disqualified from Chrome.
* Most importantly, it further burdens monitors and log clients - which
will have to investigate, and be able to cope with, corrupted chains. There
are already quite a few certificates in 6962 logs that require particularly
lax parsers and some CT log clients already resort to their own fork of DER
parsers / X.509 decoders. I think perpetuating this situation in unhealthy
in the long term.
* These MUST statements are there to guide implementation - to make it
clear that no 6962-bis implementation should admit submissions unless it
can check their validity.

While I can appreciate that the narrow view of a log operator would favour
as few restrictions on the log as possible, relaxing the requirement that
each chain is signed correctly and terminates at an accepted TA does not
make sense for the overall protocol. The CT protocol is already biased
towards ease of log implementation and I don't see a reason to tip the
balance further towards log implementation (given it has already been
demonstrated in the workgroup that finding feasible, privacy-preserving
methods to audit logs or get stronger security guarantees from them is
hard).

Eran


On Wed, Nov 22, 2017 at 4:58 PM, Eric Rescorla <ekr@rtfm.com> wrote:

>
>
> On Wed, Nov 22, 2017 at 3:55 AM, Rob Stradling <rob.stradling@comodo.com>
> wrote:
>
>> On 21/11/17 19:33, Al Cutter wrote:
>>
>>>
>>>
>>> On Tue, Nov 21, 2017 at 7:20 PM, Eran Messeri <eranm@google.com <mailto:
>>> eranm@google.com>> wrote:
>>>
>>>     [shortening subject]
>>>
>>>     Two MUSTs are being discussed:
>>>     (1) "the log MUST NOT accept any submission until it has verified
>>> ..."
>>>
>>>
>>> Actually it's just this one, I think the one below was included possibly
>>> by mistake (I mentioned to that to Rob when I spotted it on the PR).
>>>
>>
>> Yeah, I misunderstood which MUSTs (in section 4.2) EKR (and Al) thought
>> should be SHOULDs.
>>
>> I've updated the PR.  This discussion is now only about whether or not
>> that first "MUST NOT" should be changed to "SHOULD NOT".
>>
>> From the discussion on the PR, it seems that:
>>   - Eran and Andrew strongly prefer "MUST NOT".
>>   - EKR wrote "this is a WG decision" and so I presume he'll accept
>> either "MUST NOT" or "SHOULD NOT".
>>
>
> I'll accept MUST NOT as long as the MUST NOT is unambiguous. I thought it
> was but the discussion in the PR suggests that it's not because we don't
> know what the lax validation exception covers. As long as you have clarity
> on that point then SHOULD NOT/MUST NOT is totally up to the WG.
>
> -Ekr
>
>
>
>
>
>>   - Al is the sole proponent of changing it to "SHOULD NOT".
>>
>> Al, can you live with "MUST NOT"?
>>
>> --
>> Rob Stradling
>> Senior Research & Development Scientist
>> COMODO - Creating Trust Online
>>
>>
>> _______________________________________________
>> Trans mailing list
>> Trans@ietf.org
>> https://www.ietf.org/mailman/listinfo/trans
>>
>
>

--001a1147c5ac28449c05604a544e
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">To follow up on some of the points raised in the issue:<di=
v><br><div>Examples of chains that are allowed under the current text:</div=
><div>* RFC5280-compliant leaf -&gt; intermediate -&gt; trust anchor.</div>=
<div>* RFC5280-compliant leaf -&gt; intermediate -&gt; TA, where the leaf o=
r one of the intermediate are revoked or not temporally valid (I don&#39;t =
know of any logs that do revocation checking currently).</div><div>* Non RF=
C5280-compliant leaf (for example, BER-encoded instead of DER encoded) -&gt=
; intermediate -&gt; TA.</div><div>*=C2=A0leaf -&gt; intermediate1 -&gt; in=
termediate2 without the trust anchor (however when the log stores and serve=
s the chain it must serve the trust anchor used to accept the submission).<=
/div><div><br></div><div>Examples of chains that are not allowed:</div><div=
>(1) Incomplete chain: leaf -&gt; intermediate1 , missing intermediate2 -&g=
t; trust anchor.</div><div>(2) leaf -&gt; intermediate -&gt; trust anchor _=
not trusted by the log_.</div><div>(3) leaf -&gt; intermediate -&gt; trust =
anchor, where the signatures either by the intermediate or the TA do not va=
lidate.</div><div><br></div><div>In <a href=3D"https://github.com/google/ce=
rtificate-transparency-rfcs/pull/289" target=3D"_blank">PR289</a>, the sugg=
estion was to change the MUST restricting chains (2), (3) from being admitt=
ed at all, to a SHOULD, so such chains may be admitted under some circumsta=
nces (that is, AFAIUI, the meaning of SHOULD in RFC2119).</div><div><br></d=
iv><div>The arguments were:</div><div>* Chrome CT policy requires CT logs t=
o be RFC compliant.</div><div>* A bug in a CT log implementation could lead=
 to accepting a submission that doesn&#39;t chain to a trust anchor accepte=
d by the root.</div><div>* Such a bug would make the CT log non RFC-complia=
nt, and so subject to removal from the set of logs trusted by Chrome.</div>=
<div><br></div><div>I do not think this is a strong argument in favour of t=
hese changes because:</div><div>* The Chrome CT policy can be changed to ac=
commodate some deviations from the standard (Chrome&#39;s policy is dynamic=
 and may change at any time).</div><div>* There have been cases where a log=
 incorrectly accepted chains that do not terminate in an accepted TA (Rob S=
tradling has found at least one). In those cases the log was not disqualifi=
ed from Chrome.</div><div>* Most importantly, it further burdens monitors a=
nd log clients - which will have to investigate, and be able to cope with, =
corrupted chains. There are already quite a few certificates in 6962 logs t=
hat require particularly lax parsers and some CT log clients already resort=
 to their own fork of DER parsers / X.509 decoders. I think perpetuating th=
is situation in unhealthy in the long term.</div><div>* These MUST statemen=
ts are there to guide implementation - to make it clear that no 6962-bis im=
plementation should admit submissions unless it can check their validity.</=
div><div><br></div><div>While I can appreciate that the narrow view of a lo=
g operator would favour as few restrictions on the log as possible, relaxin=
g the requirement that each chain is signed correctly and terminates at an =
accepted TA does not make sense for the overall protocol. The CT protocol i=
s already biased towards ease of log implementation and I don&#39;t see a r=
eason to tip the balance further towards log implementation (given it has a=
lready been demonstrated in the workgroup that finding feasible, privacy-pr=
eserving methods to audit logs or get stronger security guarantees from the=
m is hard).</div><div><br></div><div>Eran</div><div><br></div></div></div><=
div class=3D"gmail_extra"><br><div class=3D"gmail_quote">On Wed, Nov 22, 20=
17 at 4:58 PM, Eric Rescorla <span dir=3D"ltr">&lt;<a href=3D"mailto:ekr@rt=
fm.com" target=3D"_blank">ekr@rtfm.com</a>&gt;</span> wrote:<br><blockquote=
 class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc soli=
d;padding-left:1ex"><div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><di=
v class=3D"gmail_quote"><span class=3D"">On Wed, Nov 22, 2017 at 3:55 AM, R=
ob Stradling <span dir=3D"ltr">&lt;<a href=3D"mailto:rob.stradling@comodo.c=
om" target=3D"_blank">rob.stradling@comodo.com</a>&gt;</span> wrote:<br><bl=
ockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #=
ccc solid;padding-left:1ex">On 21/11/17 19:33, Al Cutter wrote:<span><br>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">
<br>
<br>
On Tue, Nov 21, 2017 at 7:20 PM, Eran Messeri &lt;<a href=3D"mailto:eranm@g=
oogle.com" target=3D"_blank">eranm@google.com</a> &lt;mailto:<a href=3D"mai=
lto:eranm@google.com" target=3D"_blank">eranm@google.com</a>&gt;&gt; wrote:=
<br>
<br>
=C2=A0 =C2=A0 [shortening subject]<br>
<br>
=C2=A0 =C2=A0 Two MUSTs are being discussed:<br>
=C2=A0 =C2=A0 (1) &quot;the log MUST NOT accept any submission until it has=
 verified ...&quot;<br>
<br>
<br>
Actually it&#39;s just this one, I think the one below was included possibl=
y by mistake (I mentioned to that to Rob when I spotted it on the PR).<br>
</blockquote>
<br></span>
Yeah, I misunderstood which MUSTs (in section 4.2) EKR (and Al) thought sho=
uld be SHOULDs.<br>
<br>
I&#39;ve updated the PR.=C2=A0 This discussion is now only about whether or=
 not that first &quot;MUST NOT&quot; should be changed to &quot;SHOULD NOT&=
quot;.<br>
<br>
>From the discussion on the PR, it seems that:<br>
=C2=A0 - Eran and Andrew strongly prefer &quot;MUST NOT&quot;.<br>
=C2=A0 - EKR wrote &quot;this is a WG decision&quot; and so I presume he&#3=
9;ll accept either &quot;MUST NOT&quot; or &quot;SHOULD NOT&quot;.<br></blo=
ckquote><div><br></div></span><div>I&#39;ll accept MUST NOT as long as the =
MUST NOT is unambiguous. I thought it was but the discussion in the PR sugg=
ests that it&#39;s not because we don&#39;t know what the lax validation ex=
ception covers. As long as you have clarity on that point then SHOULD NOT/M=
UST NOT is totally up to the WG.</div><div><br></div><div>-Ekr</div><div><b=
r></div><div><br></div><div><br></div><div>=C2=A0</div><blockquote class=3D=
"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding=
-left:1ex"><span class=3D"">
=C2=A0 - Al is the sole proponent of changing it to &quot;SHOULD NOT&quot;.=
<br>
<br>
Al, can you live with &quot;MUST NOT&quot;?<span class=3D"m_491334065839333=
2034m_-6806481662229490398HOEnZb"><font color=3D"#888888"><br>
<br>
-- <br>
Rob Stradling<br>
Senior Research &amp; Development Scientist<br>
COMODO - Creating Trust Online</font></span></span><div class=3D"m_49133406=
58393332034m_-6806481662229490398HOEnZb"><div class=3D"m_491334065839333203=
4m_-6806481662229490398h5"><br>
<br><span class=3D"">
______________________________<wbr>_________________<br>
Trans mailing list<br>
<a href=3D"mailto:Trans@ietf.org" target=3D"_blank">Trans@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/trans" rel=3D"noreferrer" =
target=3D"_blank">https://www.ietf.org/mailman/l<wbr>istinfo/trans</a><br>
</span></div></div></blockquote></div><br></div></div>
</blockquote></div><br></div>

--001a1147c5ac28449c05604a544e--


From nobody Fri Dec 29 06:32:52 2017
Return-Path: <ekr@rtfm.com>
X-Original-To: trans@ietfa.amsl.com
Delivered-To: trans@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 8639F127AD4 for <trans@ietfa.amsl.com>; Fri, 29 Dec 2017 06:32:50 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level: 
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=rtfm-com.20150623.gappssmtp.com
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 7sCYBJK3q0Ni for <trans@ietfa.amsl.com>; Fri, 29 Dec 2017 06:32:48 -0800 (PST)
Received: from mail-yw0-x22a.google.com (mail-yw0-x22a.google.com [IPv6:2607:f8b0:4002:c05::22a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C332A120046 for <trans@ietf.org>; Fri, 29 Dec 2017 06:32:47 -0800 (PST)
Received: by mail-yw0-x22a.google.com with SMTP id n25so9467189ywh.10 for <trans@ietf.org>; Fri, 29 Dec 2017 06:32:47 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rtfm-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=9vmwjr1iqHiD3KWNKaYKGQfigmoXXaSyHxZs/q/MFNg=; b=ppsxR8dtJWy6C1ffIwgKjKLVymNrYHerZeLf+Jfhd3BNZaFyX+Gn+q+OVcn2Xhpb+I iA+ZP/6/L+iNHO3y1W2NnfdZutZMcA0nFYXjiwzmvty0uej+Erx3U1GudtRb6XxsKRwG yOk4m17aJTciufHPDqjyZB1dEiSVdZRc5boaMdImL7MrhnlFhRkMNbzuWyu1611d2aLJ YCiejhhmw6/M75szUantD2DwyscQt2FKj5Zn9RbGORmfQoY9MGl9dwp5xbcTFVCXCtgy zh25OVfCWehA7hnuWsA25077T9aWVJSyQdpxOXY8+stiv4PX4SSSEhC7Dzkoq1tCQ4Nw spgg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=9vmwjr1iqHiD3KWNKaYKGQfigmoXXaSyHxZs/q/MFNg=; b=qrcsYLbFXpZ58Q4ZEIVnsC50wYdL0sUVXPzS3+D2alvKZn9B0OFnLbxvQBrouAZI2M eA9CZyX67b5pzpsMfhe0ymKEPGfEwcd4axzJKqbYaXQ4Ja3gSPfWc+91xvdg8mPXMAQA E2JXYo/VJZvsJ/I5gAD/ZBUo4WiD/9Hv48LBQDtpEPrfZ8rRHZZodlGhihOrqDcwr4mY 6rbD06F5L2bMnMECuroLesW5tULxo9/puEZw4/yzy3yDJVH+pRtvjP0iAg5hQbvWPbIh ffxP6ugUZXZ/Wc1IG8xxQMfKTAeaqaFAlMyURaaQh6STydKeNr9/MUVrQfo9npzkEf+E 1Qfw==
X-Gm-Message-State: AKGB3mLjKruSBt6lGbdS4G422VxtBM6/Oviy7C1a4fjkfLC3vUplmRmE 9KVz+NYjlj2L86PFqiPFzj90l4gD6b7G6zCgK7XhcNRC
X-Google-Smtp-Source: ACJfBotLYjMp4ILfy3Ann2F2uiDCyHMBcihAbhBfg6gNC0/mbWyUbAMYhQgRH5dZEl69ANIsTfpKwgl5tKjl/Hi22uA=
X-Received: by 10.129.154.22 with SMTP id r22mr23611091ywg.296.1514557966902;  Fri, 29 Dec 2017 06:32:46 -0800 (PST)
MIME-Version: 1.0
Received: by 10.129.123.132 with HTTP; Fri, 29 Dec 2017 06:32:06 -0800 (PST)
In-Reply-To: <CALzYgEd7TzMNa=+FkTMDapET9Bsu3vn3QPxLQTje9qF=CUxk1w@mail.gmail.com>
References: <CALzYgEcnUe=0=vE9sw4Ee0H_94w6mv5F2=T-1rtK51WHHeqUbg@mail.gmail.com> <CACM=_OcS2zvQ1O_-YqiNFOg9PYn=jATp6dMmp6qS-maQMtoOOQ@mail.gmail.com> <f284f289-0468-5b2f-f073-2b3022158ea0@comodo.com> <CABcZeBNafvFdEA6ZEotad1VWUb9a0PLf8-etw1wR-ppnxB7Gww@mail.gmail.com> <CALzYgEd7TzMNa=+FkTMDapET9Bsu3vn3QPxLQTje9qF=CUxk1w@mail.gmail.com>
From: Eric Rescorla <ekr@rtfm.com>
Date: Fri, 29 Dec 2017 06:32:06 -0800
Message-ID: <CABcZeBO3CGnds8e-ETXTT6YEGrxY=14Q18h_apD81Y=oB28veQ@mail.gmail.com>
To: Eran Messeri <eranm@google.com>
Cc: Rob Stradling <rob.stradling@comodo.com>, Al Cutter <al@google.com>, Trans <trans@ietf.org>
Content-Type: multipart/alternative; boundary="94eb2c0bb4e89bfb1d05617b8197"
Archived-At: <https://mailarchive.ietf.org/arch/msg/trans/4T8S4frUpqmzXMyzm0y1ryZHWU4>
Subject: Re: [Trans] Section 4.2 follow-up
X-BeenThere: trans@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Public Notary Transparency working group discussion list <trans.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/trans>, <mailto:trans-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/trans/>
List-Post: <mailto:trans@ietf.org>
List-Help: <mailto:trans-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/trans>, <mailto:trans-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 29 Dec 2017 14:32:50 -0000

--94eb2c0bb4e89bfb1d05617b8197
Content-Type: text/plain; charset="UTF-8"

On Thu, Dec 14, 2017 at 2:26 AM, Eran Messeri <eranm@google.com> wrote:

> To follow up on some of the points raised in the issue:
>
> Examples of chains that are allowed under the current text:
> * RFC5280-compliant leaf -> intermediate -> trust anchor.
> * RFC5280-compliant leaf -> intermediate -> TA, where the leaf or one of
> the intermediate are revoked or not temporally valid (I don't know of any
> logs that do revocation checking currently).
> * Non RFC5280-compliant leaf (for example, BER-encoded instead of DER
> encoded) -> intermediate -> TA.
> * leaf -> intermediate1 -> intermediate2 without the trust anchor (however
> when the log stores and serves the chain it must serve the trust anchor
> used to accept the submission).
>
> Examples of chains that are not allowed:
> (1) Incomplete chain: leaf -> intermediate1 , missing intermediate2 ->
> trust anchor.
> (2) leaf -> intermediate -> trust anchor _not trusted by the log_.
> (3) leaf -> intermediate -> trust anchor, where the signatures either by
> the intermediate or the TA do not validate.
>

What about leaf -> non-CA cert -> trust anchor? That seems to conform to
the requirement that it have a valid signature chain.



In PR289 <https://github.com/google/certificate-transparency-rfcs/pull/289>,
> the suggestion was to change the MUST restricting chains (2), (3) from
> being admitted at all, to a SHOULD, so such chains may be admitted under
> some circumstances (that is, AFAIUI, the meaning of SHOULD in RFC2119).
>
> The arguments were:
> * Chrome CT policy requires CT logs to be RFC compliant.
> * A bug in a CT log implementation could lead to accepting a submission
> that doesn't chain to a trust anchor accepted by the root.
> * Such a bug would make the CT log non RFC-compliant, and so subject to
> removal from the set of logs trusted by Chrome.
>
> I do not think this is a strong argument in favour of these changes
> because:
> * The Chrome CT policy can be changed to accommodate some deviations from
> the standard (Chrome's policy is dynamic and may change at any time).
> * There have been cases where a log incorrectly accepted chains that do
> not terminate in an accepted TA (Rob Stradling has found at least one). In
> those cases the log was not disqualified from Chrome.
> * Most importantly, it further burdens monitors and log clients - which
> will have to investigate, and be able to cope with, corrupted chains. There
> are already quite a few certificates in 6962 logs that require particularly
> lax parsers and some CT log clients already resort to their own fork of DER
> parsers / X.509 decoders. I think perpetuating this situation in unhealthy
> in the long term.
> * These MUST statements are there to guide implementation - to make it
> clear that no 6962-bis implementation should admit submissions unless it
> can check their validity.
>

As I said in my comment, I think it's ultimately a wg decision what to do
here, as long as the MUST is unambiguous (otherwise it doesn't conform to
our basic requirements). So, my purpose here is primarily to ensure
non-ambiguity.

With that said, these aren't the arguments I was offering. Rather, I was
saying that the MUST is guidance to how a log should operate, but it's not
required for interoperability, and potentially not for security (at most
for DoS, it seems?), so I'm not sure it really belongs in this document.

-Ekr


> While I can appreciate that the narrow view of a log operator would favour
> as few restrictions on the log as possible, relaxing the requirement that
> each chain is signed correctly and terminates at an accepted TA does not
> make sense for the overall protocol. The CT protocol is already biased
> towards ease of log implementation and I don't see a reason to tip the
> balance further towards log implementation (given it has already been
> demonstrated in the workgroup that finding feasible, privacy-preserving
> methods to audit logs or get stronger security guarantees from them is
> hard).
>
> Eran
>
>
> On Wed, Nov 22, 2017 at 4:58 PM, Eric Rescorla <ekr@rtfm.com> wrote:
>
>>
>>
>> On Wed, Nov 22, 2017 at 3:55 AM, Rob Stradling <rob.stradling@comodo.com>
>> wrote:
>>
>>> On 21/11/17 19:33, Al Cutter wrote:
>>>
>>>>
>>>>
>>>> On Tue, Nov 21, 2017 at 7:20 PM, Eran Messeri <eranm@google.com
>>>> <mailto:eranm@google.com>> wrote:
>>>>
>>>>     [shortening subject]
>>>>
>>>>     Two MUSTs are being discussed:
>>>>     (1) "the log MUST NOT accept any submission until it has verified
>>>> ..."
>>>>
>>>>
>>>> Actually it's just this one, I think the one below was included
>>>> possibly by mistake (I mentioned to that to Rob when I spotted it on the
>>>> PR).
>>>>
>>>
>>> Yeah, I misunderstood which MUSTs (in section 4.2) EKR (and Al) thought
>>> should be SHOULDs.
>>>
>>> I've updated the PR.  This discussion is now only about whether or not
>>> that first "MUST NOT" should be changed to "SHOULD NOT".
>>>
>>> From the discussion on the PR, it seems that:
>>>   - Eran and Andrew strongly prefer "MUST NOT".
>>>   - EKR wrote "this is a WG decision" and so I presume he'll accept
>>> either "MUST NOT" or "SHOULD NOT".
>>>
>>
>> I'll accept MUST NOT as long as the MUST NOT is unambiguous. I thought it
>> was but the discussion in the PR suggests that it's not because we don't
>> know what the lax validation exception covers. As long as you have clarity
>> on that point then SHOULD NOT/MUST NOT is totally up to the WG.
>>
>> -Ekr
>>
>>
>>
>>
>>
>>>   - Al is the sole proponent of changing it to "SHOULD NOT".
>>>
>>> Al, can you live with "MUST NOT"?
>>>
>>> --
>>> Rob Stradling
>>> Senior Research & Development Scientist
>>> COMODO - Creating Trust Online
>>>
>>>
>>> _______________________________________________
>>> Trans mailing list
>>> Trans@ietf.org
>>> https://www.ietf.org/mailman/listinfo/trans
>>>
>>
>>
>

--94eb2c0bb4e89bfb1d05617b8197
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Thu, Dec 14, 2017 at 2:26 AM, Eran Messeri <span dir=3D"ltr">&lt;<a =
href=3D"mailto:eranm@google.com" target=3D"_blank">eranm@google.com</a>&gt;=
</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .=
8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr">To follow=
 up on some of the points raised in the issue:<div><br><div>Examples of cha=
ins that are allowed under the current text:</div><div>* RFC5280-compliant =
leaf -&gt; intermediate -&gt; trust anchor.</div><div>* RFC5280-compliant l=
eaf -&gt; intermediate -&gt; TA, where the leaf or one of the intermediate =
are revoked or not temporally valid (I don&#39;t know of any logs that do r=
evocation checking currently).</div><div>* Non RFC5280-compliant leaf (for =
example, BER-encoded instead of DER encoded) -&gt; intermediate -&gt; TA.</=
div><div>*=C2=A0leaf -&gt; intermediate1 -&gt; intermediate2 without the tr=
ust anchor (however when the log stores and serves the chain it must serve =
the trust anchor used to accept the submission).</div><div><br></div><div>E=
xamples of chains that are not allowed:</div><div>(1) Incomplete chain: lea=
f -&gt; intermediate1 , missing intermediate2 -&gt; trust anchor.</div><div=
>(2) leaf -&gt; intermediate -&gt; trust anchor _not trusted by the log_.</=
div><div>(3) leaf -&gt; intermediate -&gt; trust anchor, where the signatur=
es either by the intermediate or the TA do not validate.</div></div></div><=
/blockquote><div><br></div><div>What about leaf -&gt; non-CA cert -&gt; tru=
st anchor? That seems to conform to the requirement that it have a valid si=
gnature chain.</div><div><br></div><div><br></div><div><br></div><blockquot=
e class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc sol=
id;padding-left:1ex"><div dir=3D"ltr"><div><div>In <a href=3D"https://githu=
b.com/google/certificate-transparency-rfcs/pull/289" target=3D"_blank">PR28=
9</a>, the suggestion was to change the MUST restricting chains (2), (3) fr=
om being admitted at all, to a SHOULD, so such chains may be admitted under=
 some circumstances (that is, AFAIUI, the meaning of SHOULD in RFC2119).</d=
iv><div><br></div><div>The arguments were:</div><div>* Chrome CT policy req=
uires CT logs to be RFC compliant.</div><div>* A bug in a CT log implementa=
tion could lead to accepting a submission that doesn&#39;t chain to a trust=
 anchor accepted by the root.</div><div>* Such a bug would make the CT log =
non RFC-compliant, and so subject to removal from the set of logs trusted b=
y Chrome.</div><div><br></div><div>I do not think this is a strong argument=
 in favour of these changes because:</div><div>* The Chrome CT policy can b=
e changed to accommodate some deviations from the standard (Chrome&#39;s po=
licy is dynamic and may change at any time).</div><div>* There have been ca=
ses where a log incorrectly accepted chains that do not terminate in an acc=
epted TA (Rob Stradling has found at least one). In those cases the log was=
 not disqualified from Chrome.</div><div>* Most importantly, it further bur=
dens monitors and log clients - which will have to investigate, and be able=
 to cope with, corrupted chains. There are already quite a few certificates=
 in 6962 logs that require particularly lax parsers and some CT log clients=
 already resort to their own fork of DER parsers / X.509 decoders. I think =
perpetuating this situation in unhealthy in the long term.</div><div>* Thes=
e MUST statements are there to guide implementation - to make it clear that=
 no 6962-bis implementation should admit submissions unless it can check th=
eir validity.</div></div></div></blockquote><div><br></div><div>As I said i=
n my comment, I think it&#39;s ultimately a wg decision what to do here, as=
 long as the MUST is unambiguous (otherwise it doesn&#39;t conform to our b=
asic requirements). So, my purpose here is primarily to ensure non-ambiguit=
y.</div><div><br></div><div>With that said, these aren&#39;t the arguments =
I was offering. Rather, I was saying that the MUST is guidance to how a log=
 should operate, but it&#39;s not required for interoperability, and potent=
ially not for security (at most for DoS, it seems?), so I&#39;m not sure it=
 really belongs in this document.</div><div><br></div><div>-Ekr</div><div><=
br></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;borde=
r-left:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr"><div><div><br></di=
v><div>While I can appreciate that the narrow view of a log operator would =
favour as few restrictions on the log as possible, relaxing the requirement=
 that each chain is signed correctly and terminates at an accepted TA does =
not make sense for the overall protocol. The CT protocol is already biased =
towards ease of log implementation and I don&#39;t see a reason to tip the =
balance further towards log implementation (given it has already been demon=
strated in the workgroup that finding feasible, privacy-preserving methods =
to audit logs or get stronger security guarantees from them is hard).</div>=
<span class=3D"m_-404590534849382400HOEnZb"><font color=3D"#888888"><div><b=
r></div><div>Eran</div><div><br></div></font></span></div></div><div class=
=3D"m_-404590534849382400HOEnZb"><div class=3D"m_-404590534849382400h5"><di=
v class=3D"gmail_extra"><br><div class=3D"gmail_quote">On Wed, Nov 22, 2017=
 at 4:58 PM, Eric Rescorla <span dir=3D"ltr">&lt;<a href=3D"mailto:ekr@rtfm=
.com" target=3D"_blank">ekr@rtfm.com</a>&gt;</span> wrote:<br><blockquote c=
lass=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;=
padding-left:1ex"><div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div =
class=3D"gmail_quote"><span>On Wed, Nov 22, 2017 at 3:55 AM, Rob Stradling =
<span dir=3D"ltr">&lt;<a href=3D"mailto:rob.stradling@comodo.com" target=3D=
"_blank">rob.stradling@comodo.com</a>&gt;</span> wrote:<br><blockquote clas=
s=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;pad=
ding-left:1ex">On 21/11/17 19:33, Al Cutter wrote:<span><br>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">
<br>
<br>
On Tue, Nov 21, 2017 at 7:20 PM, Eran Messeri &lt;<a href=3D"mailto:eranm@g=
oogle.com" target=3D"_blank">eranm@google.com</a> &lt;mailto:<a href=3D"mai=
lto:eranm@google.com" target=3D"_blank">eranm@google.com</a>&gt;&gt; wrote:=
<br>
<br>
=C2=A0 =C2=A0 [shortening subject]<br>
<br>
=C2=A0 =C2=A0 Two MUSTs are being discussed:<br>
=C2=A0 =C2=A0 (1) &quot;the log MUST NOT accept any submission until it has=
 verified ...&quot;<br>
<br>
<br>
Actually it&#39;s just this one, I think the one below was included possibl=
y by mistake (I mentioned to that to Rob when I spotted it on the PR).<br>
</blockquote>
<br></span>
Yeah, I misunderstood which MUSTs (in section 4.2) EKR (and Al) thought sho=
uld be SHOULDs.<br>
<br>
I&#39;ve updated the PR.=C2=A0 This discussion is now only about whether or=
 not that first &quot;MUST NOT&quot; should be changed to &quot;SHOULD NOT&=
quot;.<br>
<br>
>From the discussion on the PR, it seems that:<br>
=C2=A0 - Eran and Andrew strongly prefer &quot;MUST NOT&quot;.<br>
=C2=A0 - EKR wrote &quot;this is a WG decision&quot; and so I presume he&#3=
9;ll accept either &quot;MUST NOT&quot; or &quot;SHOULD NOT&quot;.<br></blo=
ckquote><div><br></div></span><div>I&#39;ll accept MUST NOT as long as the =
MUST NOT is unambiguous. I thought it was but the discussion in the PR sugg=
ests that it&#39;s not because we don&#39;t know what the lax validation ex=
ception covers. As long as you have clarity on that point then SHOULD NOT/M=
UST NOT is totally up to the WG.</div><div><br></div><div>-Ekr</div><div><b=
r></div><div><br></div><div><br></div><div>=C2=A0</div><blockquote class=3D=
"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding=
-left:1ex"><span>
=C2=A0 - Al is the sole proponent of changing it to &quot;SHOULD NOT&quot;.=
<br>
<br>
Al, can you live with &quot;MUST NOT&quot;?<span class=3D"m_-40459053484938=
2400m_-1172115032248237156m_4913340658393332034m_-6806481662229490398HOEnZb=
"><font color=3D"#888888"><br>
<br>
-- <br>
Rob Stradling<br>
Senior Research &amp; Development Scientist<br>
COMODO - Creating Trust Online</font></span></span><div class=3D"m_-4045905=
34849382400m_-1172115032248237156m_4913340658393332034m_-680648166222949039=
8HOEnZb"><div class=3D"m_-404590534849382400m_-1172115032248237156m_4913340=
658393332034m_-6806481662229490398h5"><br>
<br><span>
______________________________<wbr>_________________<br>
Trans mailing list<br>
<a href=3D"mailto:Trans@ietf.org" target=3D"_blank">Trans@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/trans" rel=3D"noreferrer" =
target=3D"_blank">https://www.ietf.org/mailman/l<wbr>istinfo/trans</a><br>
</span></div></div></blockquote></div><br></div></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div></div>

--94eb2c0bb4e89bfb1d05617b8197--

