[Rats] draft-birkholz-rats-corim-02 review

Carl Wallace <carl@redhoundsoftware.com> Mon, 25 April 2022 11:02 UTC

Return-Path: <carl@redhoundsoftware.com>
X-Original-To: rats@ietfa.amsl.com
Delivered-To: rats@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 886333A1768 for <rats@ietfa.amsl.com>; Mon, 25 Apr 2022 04:02:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.109
X-Spam-Level:
X-Spam-Status: No, score=-2.109 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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=redhoundsoftware.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 AniQfi6xPbOw for <rats@ietfa.amsl.com>; Mon, 25 Apr 2022 04:02:13 -0700 (PDT)
Received: from mail-qt1-x830.google.com (mail-qt1-x830.google.com [IPv6:2607:f8b0:4864:20::830]) (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 5BE793A176B for <rats@ietf.org>; Mon, 25 Apr 2022 04:02:00 -0700 (PDT)
Received: by mail-qt1-x830.google.com with SMTP id f14so10004053qtq.1 for <rats@ietf.org>; Mon, 25 Apr 2022 04:02:00 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhoundsoftware.com; s=google; h=user-agent:date:subject:from:to:message-id:thread-topic :mime-version:content-transfer-encoding; bh=dEKoWHS3cNRWz84hXvS+FdV5zILhOe3UIvYnB7cu9Ds=; b=igMD+pyaYfpccJdGZhVFXQRB3a3tmotFWDJvmphYvfbPJkHzo2jSgD5uou6j84amAY Se4InYPuPsok3Y+PGSXldIQLhOJAkSIraFXA6uAIldIUfxaJOjgPxduCgoBu4//xe3Wq rsM8kLm7qi6UOjednc6lB41qruilqNF5Ng590=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:user-agent:date:subject:from:to:message-id :thread-topic:mime-version:content-transfer-encoding; bh=dEKoWHS3cNRWz84hXvS+FdV5zILhOe3UIvYnB7cu9Ds=; b=BUNK3VK8sUHr0ycPOGhUI86lusRM13I2C8nyHFkikl7lICvO+v0aT5cVFVmG/yUu5z E387HgXS2qdXd1+y9Sz/pUf0oc8uO60/a4PoUaSNN9KCo+AWsP/LWHF0gTXlA0AFt59R DrnzoYVxZQmPNcxcif1Ez7aVFGw92UXIw3hE2PxQwIK7ve7L9asJtGK+7qeKlmn+O1lF qtVGia128O/DIJOsItEN4W4iQi/kZy/k04E/Dul6vcrt/KFxYdReqyET9yITIPTDQjlx XpKfaWQ/fwG2H0qNAtOUggWbeifOmZuBIlNRrknLC/PKBKjUs/+T73TJ0oFVluicDD5E rKIQ==
X-Gm-Message-State: AOAM532XGQtbbLtWnOMZ6T3/vodATiKuugmyRjvB5OsQkzbJ2EMwoWUP ZdBcCqSfGPAUVtLRgGbZkVk5NQYqxq5Ezg==
X-Google-Smtp-Source: ABdhPJxXS6eS4gr7UfgKcPC/2axWaxRXfGjvVts+NNOQr8vfyPvBGYGO1FuM9QfMHIYBsDZy+EDjlA==
X-Received: by 2002:a05:622a:1747:b0:2f1:f628:8130 with SMTP id l7-20020a05622a174700b002f1f6288130mr11414156qtk.383.1650884518788; Mon, 25 Apr 2022 04:01:58 -0700 (PDT)
Received: from [192.168.2.16] (pool-173-66-88-168.washdc.fios.verizon.net. [173.66.88.168]) by smtp.gmail.com with ESMTPSA id o19-20020a05622a009300b002f20511d9f4sm6209403qtw.6.2022.04.25.04.01.58 for <rats@ietf.org> (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 25 Apr 2022 04:01:58 -0700 (PDT)
User-Agent: Microsoft-MacOutlook/16.60.22041000
Date: Mon, 25 Apr 2022 07:01:57 -0400
From: Carl Wallace <carl@redhoundsoftware.com>
To: rats@ietf.org
Message-ID: <8C5EA317-7581-4FFA-AA68-1DA6ABAEA5A4@redhoundsoftware.com>
Thread-Topic: draft-birkholz-rats-corim-02 review
Mime-version: 1.0
Content-type: text/plain; charset="UTF-8"
Content-transfer-encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/rats/imGbipfuhC7Z5EHLSRWDTinkfyk>
Subject: [Rats] draft-birkholz-rats-corim-02 review
X-BeenThere: rats@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Remote ATtestation procedureS <rats.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rats>, <mailto:rats-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rats/>
List-Post: <mailto:rats@ietf.org>
List-Help: <mailto:rats-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rats>, <mailto:rats-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 25 Apr 2022 11:02:19 -0000

I know this is not yet a working group draft, but since working group adoption post-recharter seemed likely based on last IETF session, I sent the review here. I read this in tandem with draft-fdb-rats-psa-endorsements as suggested.

General
- COSE references point to RFC7231 throughout and should point to RFC8152.
- Would CoMID work better in standalone spec (or at least a more prominent section and separate schema in this doc)?
- The phrase "This rule and its constraints MUST be followed when generating or validating a XXX" appears often. What does validating mean here and what is the rule? There's not much in the way of prose describing how to process values, so it seems like "validating" may mean parsing and the "rule" is the schema snip each section with these words. Maybe substitute parsing for validating or just drop these statements if this is correct as adhering to schema definitions can be assumed.

Section 1
- The last paragraph states the draft defines a "Concise Manifest Revocation" but the concept of revocation does not appear later in the draft. Is this referencing the comid.replaces or something different (or not yet written)?

Section 2
- Change singed to signed and change temper-evidence to tamper-evidence.
- CoMID is said to be an extension to CoSWID but in the schema appears as an alternative to CoSWID. None of the CoSWID sockets are extended here. What parts extend CoSWID? 
- In the third paragraph, should "must be signed" be "MUST be signed"?

Section 3.1
- The definition of COSE-Sign1-corim here does not match the one in the schema. Neither header map defined in this section appears in the schema.
- Section 3.1.1 should include some words re: corim.signature-validity relationship to public key validity and maybe mention the potential for revocation. Ditto relationship to rim-validity later in the draft.

Section 3.2
- Why limit the MUST to unsigned?
- It may be worth stating whether rim-validity should be < signature-validity or if wholly independent.
- Why are "dependent-rims" said to be "possibly dependent"? What does dependent mean here?
- Must the dependent-rims (and their dependent-rims) all be processed and verified to satisfy the MUST statement re: validation? How would loops be handled? Must processing fail if a corim-locator-map thumbprint is different from calculated value (even if it verifies)? Why use a hash (i.e., suppose something in unprotected changes)? Is the $concise-reference-integrity-manifest-type-choice the expected type when retrieving a dependent RIM or should it be signed-corim only? What would "other associated resources" be?
- Is a corim-profile only necessary where the profile extends CoRIM or is this expected to be generally used?
- Same comment re: rim-validity as for signature validity.
- What relationship should be expected between corim.entities and corim.signer in the corim-meta-map and the kid in the COSE layer?
- What is expected to be in the bytes for oid-type: DER encoded with tag and length, DER without tag and length, something else?
- The opening paragraph for 3.2.1 seems misplaced. The section provides info about an entity, not origin and purpose.
- In 3.2.2, is the data downloaded assumed to be a CoRIM (as the name implies) or is it any file or record (as the text suggests)?

Section 3.4
- How does the identity-map enable one to "anticipate required capabilities"? 
- It may be worth adding some words that the tag ID type is the same as CoSWID (despite use of different type aliases in the respective definitions).

Section 3.5
- Some words describing each of the three roles would be helpful, for example, describe the difference between tag-creator and creator.

Section 3.6
- Are the linked tags expected to be in the same CoRIM? If so, why would one supplement or replace a tag with a sibling tag instead of just using the value from the linked tag directly? If not, where would they be and how is this envisioned to work?
- Where replacement is used and if in same CoRIM, ought some fields (as defined in 3.3) be required to be absent (i.e., why express what may be verbose triples that are OBE)?

Section 3.7
- Should there be some language to prohibit the same environment from appearing more than one time in a triple list? The psa-endorsement profile states a "single reference-triple-record SHALL completely describe the updatable PSA RoT". Ought this requirement go in the CoRIM spec instead?
- I am curious what it means for this spec that the first profile of it wound up defining several new extension structures. It makes sense that the certification claims in the PSA profile would be unique to that profile, but the need to extend class-id-type-choice, measured-element-type-choice and triples-map-extension may suggest the mechanisms in this spec are not sufficiently general purpose.

Section 3.11
- When would the key material not be a public key? How would verifier know? It seems like this field may need something to indicate type of key, i.e., to inform how to parse the DER encoded blob. In absence of a type, SubjectPublicKeyInfo seems like the right structure, but not if this may not convey a public key.
- I suggest adding "with the last certificate verified by a trust anchor" to the end of the comid.keychain text.
- Why require base64 for certificates instead of binary DER-encoded?

Section 4
- corim-map does not appear in the schema. Are both corim-map and unsigned-corim-map needed?
- Adding a comment to restrict language-type to the IANA language tag set would be nice (to echo the restriction on the field where the type is used in 3.3). Or maybe just drop the language-type type a la CoSWID.
- Why is the full CoSWID schema present here? I think the only structure referenced is concise-swid-tag. If it must be here, it would be nice to keep all comments from CoSWID schema and denote the start and stop of the copy and paste with comments.