Re: [Sidrops] proposed, revised text for Section 6

Job Snijders <job@instituut.net> Tue, 05 May 2020 12:14 UTC

Return-Path: <job@instituut.net>
X-Original-To: sidrops@ietfa.amsl.com
Delivered-To: sidrops@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id E44063A16AC for <sidrops@ietfa.amsl.com>; Tue, 5 May 2020 05:14:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.896
X-Spam-Level:
X-Spam-Status: No, score=-1.896 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, UNPARSEABLE_RELAY=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=instituut-net.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 42nEyzy46qbw for <sidrops@ietfa.amsl.com>; Tue, 5 May 2020 05:13:59 -0700 (PDT)
Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) (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 C8A113A166C for <sidrops@ietf.org>; Tue, 5 May 2020 05:13:58 -0700 (PDT)
Received: by mail-wm1-x32c.google.com with SMTP id x25so2040675wmc.0 for <sidrops@ietf.org>; Tue, 05 May 2020 05:13:58 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=instituut-net.20150623.gappssmtp.com; s=20150623; h=from:date:to:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=eojVlZruyiREWtr16O8mUC6bSsqPIrNYUtdiqshkWbw=; b=R31FZlbM5YI2tONIWp3mqtOHmN4G7uOA24Eg+ZeI6kDHaSqo078f9GsqLvB0deDuHi xHv7j+r+6HItK2AfVhkvqtx5GzEJbNyoHkJeWeC0vwLPAkHYWqTx7HCCcRx5JJcP0Ib8 FhH7hxhb6GRsCOJlB0VVSiddxWrfIY8j7VgfO5+2G+FDDbIrCWbtswWuemgU0CULrRZd 4+EOn0TegrwNFPYkf713HRyF5UUHSd9YwcpOaq8bcnAWaQzAEGNv1WaNxpmwH48sqpRo yc4F8eYuHIL1OydGBDU/l3Q1nTcRNqNbBnyrKH5jdtbf2G8gCkNE8wij5Y+smWfR0OZl HCKQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:date:to:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=eojVlZruyiREWtr16O8mUC6bSsqPIrNYUtdiqshkWbw=; b=nKioD4EKOXWEx6aBYd6CTy0bcfDrpt7LQr9Vsi9iJscoHvWJkNLqnck192BvOkQWCC mDQj9BoZWHPZhP267xzBqCgif1WEIRSuxT/FZfznhhrd57OMsdJGrNNVDTX1IovUeHMz hhVZ9eividI/Cr9N5bMWzOEf/zjhcr/GQDfrVhHMMVIWQqiypeLm41qfE03sTGy9A0Cs fODD7qjaeW6bR5U1wzzIHQ/JDD4nlofjGZMXwPka29aP4Gn9BjnN/d+iIIEaybhM+thE wehiA1YUYY/4a0Tmw+ew/AREuaHUAfkAOad3L4nA0T94a70KEc2JF5jykUygRmKgRofm HaMg==
X-Gm-Message-State: AGi0Pubk3plQF2gx9zrpohG4WR0NqEMNZh5Gl3j9ZCXRT6+8URY4exxa elDcLL8T8c8bqNMoly64vhBoNQW1vPI=
X-Google-Smtp-Source: APiQypLMylC6rXj0FlPEZ2HrxX0rGU4R8xZ04DaiNrTwPTjqpOPMrSAnReyziob+3gaZruH95UwdsA==
X-Received: by 2002:a1c:3182:: with SMTP id x124mr3456104wmx.54.1588680836301; Tue, 05 May 2020 05:13:56 -0700 (PDT)
Received: from vurt.meerval.net (vurt.meerval.net. [192.147.168.22]) by smtp.gmail.com with ESMTPSA id y31sm3241606wrd.83.2020.05.05.05.13.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 May 2020 05:13:55 -0700 (PDT)
From: Job Snijders <job@instituut.net>
X-Google-Original-From: Job Snijders <job@sobornost.net>
Received: from localhost (vurt.meerval.net [local]) by vurt.meerval.net (OpenSMTPD) with ESMTPA id 8af0bf22; Tue, 5 May 2020 12:13:54 +0000 (UTC)
Date: Tue, 05 May 2020 12:13:53 +0000
To: sidrops@ietf.org
Message-ID: <20200505121353.GB93200@vurt.meerval.net>
References: <557f0928-c7b1-4b8d-b3b6-078733f7ef8a.ref@verizon.net> <557f0928-c7b1-4b8d-b3b6-078733f7ef8a@verizon.net>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <557f0928-c7b1-4b8d-b3b6-078733f7ef8a@verizon.net>
X-Clacks-Overhead: GNU Terry Pratchett
Archived-At: <https://mailarchive.ietf.org/arch/msg/sidrops/97QOGIZeXhO3DOHZbNkgfgR2BqY>
Subject: Re: [Sidrops] proposed, revised text for Section 6
X-BeenThere: sidrops@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: A list for the SIDR Operations WG <sidrops.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/sidrops>, <mailto:sidrops-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/sidrops/>
List-Post: <mailto:sidrops@ietf.org>
List-Help: <mailto:sidrops-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/sidrops>, <mailto:sidrops-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 05 May 2020 12:14:05 -0000

Dear group,

On Mon, May 04, 2020 at 04:08:43PM -0400, Stephen Kent wrote:
> To get the discussion going, I generated the following text for Section 6. I
> deleted anything that was not definitive (e.g., deferred to local policy)
> and removed the warning message suggested text (I assume RP software
> developers can write their own messages, but we can add this back if folks
> feel it's useful.
> 
> I also added a paragraph about the manifest/CRL circular relationship.
> 
> In all cases I adopted the approach George suggested, i.e., if there's an
> error indicating that one or more signed objects may be missing (or not
> current), ignore ALL data associated with the CA instance at the pub point
> and DO NOT rely on cached data.
> 
> Comments welcome, as usual.
> 
> All new text is in red.

Small note: neither the archive
(https://mailarchive.ietf.org/arch/msg/sidrops/Qy7YAVOUYrDVZxUPFPNZfekoJKI/)
nor my mail client show any text in red. I am assuming the below quoted
text replaces all of section 6 in RFC 6486. I added section numbers to
the below quoted text and line-wrapped it. My comments are inline.

Stephen, question for you: is the use of the word 'files' and 'objects'
synonymous in the below text? Or are 'files' something different than
'objects'?

> 6.1. Determining Manifest State & Object Acceptance
> 
> For a given publication point, and given CA instance, an RP MUST
> perform the following tests to determine the manifest state of the
> publication point. (Note that, during CA key rollover [RFC6489],
> signed objects for two or more different CA instances will appear at
> the same publication point. The tests described below are to be
> performed for a specified CA instance, i.e., a the manifest’s EE
> certificate was issued by that CA.)
>
> 6.1.1. Select the CA's current manifest (the "current" manifest is the
> manifest issued by this CA having the highest manifestNumber among all
> valid manifests (as defined in Section 4.4). If the publication point
> does not contain a valid manifest, proceed as described in Section
> 6.2. (Lacking a valid manifest, the following tests cannot be
> performed.)
> 
> 6.1.2. Check that the current time (translated to UTC) is between
> thisUpdate and nextUpdate. If the current time does not lie within
> this interval, proceed as described in Section 6.4.
>
> 6.1.3. Acquire all objects at the publication point associated with
> this CA instance, i.e., the CRL and each object containing an EE
> certificate issued by the CA. If there are files listed in a manifest
> that do not appear at the publication point, then proceed as described
> Section 6.5.
> 
> 6.1.4. Verify that the listed hash value of every file listed in the
> manifest matches the value obtained by hashing the file at the
> publication point. If the computed hash value of a file listed on the
> manifest does not match the hash value contained in the manifest, then
> proceed as described in Section 6.6.
> 
> 6.1.5. If a current manifest contains entries for objects that are not
> within the scope of the manifest, then the out-of-scope entries MUST
> be disregarded in the context of this manifest.If there is no other
> current manifest that describes these objects within that other
> manifest's scope, then see Section 6.2.
> 
> Note that there is a “chicken and egg” relationship between the
> manifest and the CRL for a given CA instance. If the EE certificate
> for the manifest is revoked, the CA or publication point manager has
> made an error. In this case all signed objects associated with the CA
> instance MUST be ignored. Similarly, if the CRL for the CA instance is
> not listed on a valid, current manifest, all signed objects associated
> with the CA instance MUST be ignored, because the CRL is missing.
> 
> 6.2. Missing Manifests
> 
> The absence of a current manifest at a publication point could occur
> due to an error by the publisher or due to (malicious or accidental)
> deletion or corruption of all valid manifests.
>
> When no valid manifest is available, there is no protection against
> attacks that delete signed objects or replay old versions of signed
> objects. To guard against the adverse impact of processing an
> incomplete set of signed objects, an RP MUST treat all signed objects
> associated with the missing manifest as invalid. (These objects are
> all issued by the same instance of a CA.) RP software MUST issue a
> warning when there is no current manifest for a CA instance.
>
> An RP may have access to a local cache containing a previously issued
> manifest that is still valid. It is RECOMMENDED that the RP not make
> use of this data, to ensure consistent a consistent outcome in when a
> manifest is missing.
> 
> 6.3. Invalid Manifests
> 
> The presence of an invalid manifest at a publication point could occur
> due to an error by the publisher or due to (malicious or accidental)
> corruption of a valid manifest.An invalid manifest MUST never be used,
> even if the manifestNumber of the invalid manifest is greater than
> that of other (valid) manifests.
> If there is no valid, current manifest available at the publication
> point for the CA instance, an RP MUST treat the signed objects at the
> publication point as indicated above in Section 6.2. A warning MUST be
> issued when an invalid manifest is encountered.
> 
> 6.4. Stale Manifests
> 
> A manifest is considered stale if the current time is after the
> nextUpdate time for the manifest.This could be due to publisher
> failure to promptly publish a new manifest, or due to (malicious or
> accidental) corruption or suppression of a more recent manifest.  All
> signed objects at the publication point issued by the entity that has
> published the stale manifest, and all descendant signed objects that
> are validated using a certificate issued by the entity that has
> published the stale manifest at this publication point, MUST be
> treated at invalid and a warning MUST be issued.
>
> The primary risk in using such signed objects is that a newer manifest
> exists that, if present, would indicate that certain objects have been
> removed or replaced. (For example, the new manifest might show the
> existence of a newer CRL and the removal of one or more revoked
> certificates). Thus, the use of objects from a stale manifest may
> cause an RP to incorrectly treat invalid objects as valid. The risk is
> that the CRL covered by the stale manifest has been superseded, and
> thus an RP will improperly treat a revoked certificate as valid.
> 
> 6.5. Mismatch between Manifest and Publication Point
> 
> If there exist valid signed objects associated with a CA instance and
> they do not appear in any current, valid manifest for this CA
> instance, these objects MUST be ignored by an RP, and a warning MUST
> be issued.

Are we sure about the above? The above approach would preclude us from
using the current valid manifest to determine which .roa files should be
deleted from the local system, right?

> If there are files listed on the manifest that do not appear in the
> repository, then these objects have been improperly deleted from
> repository (via malice or accident). A primary purpose of manifests is
> to detect such deletions. Therefore, in this case, an RP MUST ignore
> all signed objects associated with this CA instance.

A more robust approach might be to *not* ignore locally cached data (iff
the locally cached data matches the filename and hash listed on the
valid manifest, and a valid CRL is present)

> 6.6. Hash Values Not Matching Manifests
> 
> A file appearing on a manifest with an incorrect hash value could
> occur because of publisher error, but it also may indicate that an
> attack has occurred, e.g., one in which an older version of an object
> has been substituted for a newer version of the object. In this case
> an RP cannot know the content of the missing object, and thus all
> signed objects associated with this instance of the CA MUST be ignored
> by the RP, and a warning MUST be issued.

Same comment as in previous section: perhaps a more robust approach
might be to *not* ignore locally cached data (iff the locally cached
data matches the filename and hash listed on the valid manifest, and a
valid CRL is present).

Kind regards,

Job