[Suit] AD review of draft-ietf-suit-manifest-22

Roman Danyliw <rdd@cert.org> Wed, 24 May 2023 20:33 UTC

Return-Path: <rdd@cert.org>
X-Original-To: suit@ietfa.amsl.com
Delivered-To: suit@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2DF1FC15199A for <suit@ietfa.amsl.com>; Wed, 24 May 2023 13:33:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.097
X-Spam-Level:
X-Spam-Status: No, score=-7.097 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_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cert.org
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id yPTuDqjhtDfZ for <suit@ietfa.amsl.com>; Wed, 24 May 2023 13:33:34 -0700 (PDT)
Received: from USG02-CY1-obe.outbound.protection.office365.us (mail-cy1usg02on0700.outbound.protection.office365.us [IPv6:2001:489a:2202:d::700]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5BCCBC151990 for <suit@ietf.org>; Wed, 24 May 2023 13:33:33 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector5401; d=microsoft.com; cv=none; b=j6/PA/woU6QWxwdfmJ+Eam8feFqezcZXcEiptOtgvZoUD3v5tnmnc4Rw02cGNSL13a1ZeyFP+OAICTfcNrrX9wYhIRQ4rd+mPoW5w1qpLis3NUxAyWjOeQgtWsKd5cWLJPlP5Yo2ZOKb92e1Qg5LdpqWJk4Otb+YaNFyioVNdcOYiN8fRWCDjvJBfERfiNe1CtiVLBbYBs7wabkNXiIt6V/9ORpjUbGxkzhLe5ORuKD642e2KDSz5gJNWJd8JzVksodE+ydP6YRSEsSyzyoXYEW9SbypP4W0HvP0ydPCkGkwOJoXDkgM3pZjedfeS2lR9SJNFC5m/MED9Zvc/VoPwg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector5401; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=/ZlYXOxZVCYMM+FijHAwZUAvy6k8AMD/WmDzfHJEhuM=; b=NDK0Nb0G7k7GI8qnBpVcgFkl/NcJxWNORxJEZ6yYqcNxOdY282syWP90cmNJFmg3bpvw2IK2BSHYvtWX8hzyUah1ikoknD4LGR1nZTyG7LhdkyB5oFptyf6+LniSk3v9KYkJ6mm98VekqkFHoVVz5RWNdUbHCAS53x+qyAa/Ukwkyi0sQ2BpbZYN/q/kljf9iM91rdOYmJdcm3Hx+NfLIdSHWU6Xc+5U9C9U7jargxtbUTNk0MAr+3sgAjQWCZjXSOD/BmDvMga9+TDLnDbSXZviEo3omIjVld8QYYyCVf7WgvkthQoaO0xJtHPrWMrBl3Th2Fs8OvMEx/2qZgKMVw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cert.org; dmarc=pass action=none header.from=cert.org; dkim=pass header.d=cert.org; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cert.org; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/ZlYXOxZVCYMM+FijHAwZUAvy6k8AMD/WmDzfHJEhuM=; b=KknJmi62MsPRxSx6Vzpa/9LQUZDuppAu3icSLWc8acleiOaJ3WJ00yPt4E70LPkvNXKEEDKNqh6ZCw7G8POeY6tKGgtMcqIFlQ1eKk2fzEl0+GbVyiKsl4gY7fOSp6POIHyVCWPMkTdJ3c4hT2loYvkTVVOP1Cg8N2COQlpC0u0=
Received: from BN2P110MB1107.NAMP110.PROD.OUTLOOK.COM (2001:489a:200:168::11) by BN2P110MB1207.NAMP110.PROD.OUTLOOK.COM (2001:489a:200:17c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.15; Wed, 24 May 2023 20:33:29 +0000
Received: from BN2P110MB1107.NAMP110.PROD.OUTLOOK.COM ([fe80::29b2:8307:6a90:c79f]) by BN2P110MB1107.NAMP110.PROD.OUTLOOK.COM ([fe80::29b2:8307:6a90:c79f%7]) with mapi id 15.20.6411.029; Wed, 24 May 2023 20:33:29 +0000
From: Roman Danyliw <rdd@cert.org>
To: "suit@ietf.org" <suit@ietf.org>
Thread-Topic: AD review of draft-ietf-suit-manifest-22
Thread-Index: AdmOfufPtWWyEuDwT4+aTf2DQkJz/g==
Date: Wed, 24 May 2023 20:33:29 +0000
Message-ID: <a328dceb05754adbbbb816b61c164c5c@BN2P110MB1107.NAMP110.PROD.OUTLOOK.COM>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=cert.org;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: BN2P110MB1107:EE_|BN2P110MB1207:EE_
x-ms-office365-filtering-correlation-id: 188c96e1-6991-413f-20fd-08db5c962299
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: 1VKf3In+K59EKyX82USDbmitJ9DDTg4GdIoukKVkEGnsv71lHM5M/BUIFBvnSQGzjwxImZkkZpA35WtxgOwOFZ/WRXG2hzIpfHnXTCejLrvH3pz8PR31sOzkpkFraJJOBfoDhMM2PXtZKTKJqlDg5tLrs6FLbK5lS1oKmm0ljUPiUOfNIGHwfKuevuIPPr2yB9JTQOTmAPUMNPsY9bcgJgbGz7OwSFrx3g+9QPjkvxlsep49xW1NFxlSnmKNTzRK98xQC8UtTFnmR+JZRWcR/r1crUxnf0bN7U6GJgVe0/+2JPx99YS2W/t/V2x/Y1bLVBbv1uWZgeUFbyWdG5xJ7VRriNMe8iiA0IeCdGZkxohydn+iVjLdv3u4qcJrW+Qn8hD6hNLpjlS7gccy1fcDci+YpyV/5osJMJuI6o8ocvcFAe9mYdoFESBm8aMGrEczpI5Zx0OVjAVEUbEazWcmPIs7ShDicmDTxEd1TE0B9tmGPeeIZpPTIiQbKtJtp1iwIt9ZdhFYPXsruea3XL1zqwZmPObDyfthadQto88oPnBuOs4tvvG9ntHyqCaNA0K0
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN2P110MB1107.NAMP110.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230028)(396003)(39830400003)(136003)(366004)(451199021)(5660300002)(508600001)(966005)(24736004)(108616005)(8676002)(8936002)(41300700001)(7696005)(6506007)(9686003)(26005)(64756008)(66446008)(6916009)(71200400001)(66556008)(66476007)(76116006)(66946007)(186003)(30864003)(2906002)(83380400001)(38100700002)(122000001)(82960400001)(55016003)(41320700001)(86362001)(38070700005); DIR:OUT; SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: ZEXDGpgQLOR1Fw3hJJgMLOAXGl4b5JwDaf+JdZ38qvqpd49WFI2rhPKoaKXZ77WgaO8ljwLBX7CCutdkSXTvNfAH1sVIObJg8QQa77L0KGpkZhPRIUbhOEJ6Q8gZpJO8/sS7n9Q6/SzzqJ1KASrPlVvyQAgvVDh1FxSRdDZVKEGNnauiGkidrWcNtO7oB2DwgioTzisLDdLTkXC81PQg0eMCoUvOYTcrfJDuRjwBIfCIYm6upMmnE4PTnGpTAuqgyjKTE83SBJF9YYaqc89B7WXaAZmgdHshnWUG6laV8EKesvMu1s4NDADQxUkbsl3o/v22bG5gHClte+E6WMSwHCTh4WECRM83NVJCWXnNzPRV0lo4Y5ZyH5oE0ahsjqMdIu6vpiWd2Cb9WP/QU8JCSkCnVxavOWDw7wHVmI71EGM=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: cert.org
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: BN2P110MB1107.NAMP110.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-Network-Message-Id: 188c96e1-6991-413f-20fd-08db5c962299
X-MS-Exchange-CrossTenant-originalarrivaltime: 24 May 2023 20:33:29.7769 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 95a9dce2-04f2-4043-995d-1ec3861911c6
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN2P110MB1207
Archived-At: <https://mailarchive.ietf.org/arch/msg/suit/Ak_sFp1PaZcIRSol5Ge_xH2FN-w>
Subject: [Suit] AD review of draft-ietf-suit-manifest-22
X-BeenThere: suit@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Software Updates for Internet of Things <suit.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/suit>, <mailto:suit-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/suit/>
List-Post: <mailto:suit@ietf.org>
List-Help: <mailto:suit-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/suit>, <mailto:suit-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 24 May 2023 20:33:39 -0000

Hi!

I performed an AD review of draft-ietf-suit-manifest-22.  Thanks for all of the work in producing this key WG deliverable.  My feedback is as follows:

** Abstract.  Editorial.  s/find the that/find the/

** Section 1.
   While the transport of
   firmware images to the devices themselves is important there are
   already various techniques available.  Equally important is the
   inclusion of metadata about the conveyed firmware image

Sentence one is saying that there are already solutions to transporting firmware.  Is the second sentence suggesting that what those existing solutions are missing is the ability to include meta-data about that firmware.  If so, please make it clearer.  If that's not the distinction, could the thesis be made clearer.

** Section 1
   End-to-end security allows
   the author, who builds the firmware image, to be sure that no other
   party (including potential adversaries) can install firmware updates
   on IoT devices without adequate privileges.

Is "end-to-end encryption" being framed here as some kind of code signing infrastructure?

** Section 1.
   For confidentiality
   protected firmware images it is additionally required to encrypt the
   firmware image.

Good point.  However, how is this relevant given that this document doesn't describe or mandate encryption of firmware images.

** Section 1.
    a Firmware Author to reason about releasing a firmware

What does it mean to "reason about releasing a firmware" from the perspective of the authors?

** Section 1.
   *  a Device Operator to reason about the impact of a firmware.

   *  the Device Operator to manage distribution of firmware to devices.

What is implied by the distinction between "_a_ device operator" and "_the_ device operator"?

** Section 1.  
   * a Plant Manager to reason about timing and acceptance of firmware
      updates.

Who is a "plant manager"?  How are they different than an "device operator"? 

** Section 2.   Definition of manifest.
-- Section 1 says the manifest is:
   A manifest is a bundle of metadata describing one or more code or
   data payloads and how to:

   *  Obtain any dependencies

   *  Obtain the payload(s)

   *  Install them

   *  Verify them

   *  Load them into memory

   *  Invoke them

-- Section 2 says:

  A manifest is a bundle of metadata about the firmware
  for an IoT device, where to find the firmware, and the devices to
  which it applies.

There seem to be two definitions of manifest.  Does it need to be done twice?
Section 2 notes that the applicability of the firmware, but this isn't noted in Section 1.

** Section 2.  Envelope.  Consider defining or providing a forward reference to explain "severable elements" or providing an explicit definition.

** Section 3.
   Additional
   specifications describe functionality of advanced use cases, such as:
   ...
   Compression of firmware images

What specification should be referenced here?  Where is compressing firmware described?

** Section 5.  Bullet point #2. Editorial. s/.././

** Section 5.1

   The SUIT Envelope is a container that encloses the Authentication
   Block, the Manifest, any Severable Elements, and any integrated
   payloads.  

The diagram at the end of Section 5 lists that the "SUIT Envelope" also includes "human-readable text".  This text is not mentioned in this sentence.  My understanding from later text is that this "human readable text" is severable.  Why does it get a call out but the other severable elements don't?

** Section 5.1.  Editorial.
OLD
and integrated payloads in a way
   that would add substantial complexity with existing solutions.  

NEW
... and integrated payloads in a way that avoids substantial complexity that would be needed with existing solutions.

** Section 5.2.  The digest container appears to support both MACs and Signatures.  These are slightly different security constructs.  Is there guidance on when one would use one vs. the other that are specific to the manifest?

** Section 5.4.3
   Integrated Payloads are integrity-checked
   using Command Sequences, so they do not have Integrity Check Values
   present in the Manifest.

I don't understand "... are integrity-checked using Command Sequences."  The subsequent reference to 8.4.11 is about severable items.

** Section 6.1
   Selecting an older manifest in the event of failure of the latest
   valid manifest is a robustness mechanism that is necessary for
   supporting the requirements in [RFC9019], Section 3.5.

RFC9019 doesn't have a Section 3.5.

** Section 6.2
   Once a valid, authentic manifest has been selected, the manifest
   processor MUST examine the component list and verify that its maximum
   number of components is not exceeded and that each listed component
   is supported.

Is this text the same as saying check that the number of components listed in the manifest is not larger than the number in the actual system?

** Section 6.2. Editorial.
   If the manifest contains more than one component, each command
   sequence MUST begin with a Set Component Index.

"Set Component Index" has being introduced yet.  A forward reference would help.

** Section 6.2
   has sufficient permissions imparted by its signatures

What is the permission model associated with signatures?  What if a MAC is provided?

** Section 6.2.1
   Signature verification can be energy and time expensive on a
   constrained device.  
    ...
   A Recipient MAY choose to parse and execute only the
   SUIT_Common section of the manifest prior to signature     verification,
   if all of the below apply:

    ...

   *  The Recipient receives manifests over an unauthenticated channel,
      exposing it to more inauthentic or incompatible manifests, and

I'm having trouble understanding the situation.  It seems like there is a use case to ignore the expensive signature check and execute SUIT_Common.  However, why can this can only be done in a less when the channel an unauthenticated channel?

** Section 6.2.1
   When executing Common prior to authenticity validation, the Manifest
   Processor MUST first evaluate the integrity of the manifest using the
   SUIT_Digest present in the authentication block.

Is this action for security reasons or to catch non-malicious corruption?  I ask because if this manifest was attacker-generated with a bogus signature (but unchecked), won't the digest value be under attacker control so it will always be match?

** Section 6.3
       Executing an update MUST either result in an error, or a
       verifiably correct system state.

What is "verifiably correct" in this context of this manifest specification?  Being in a "verifiably correct" state seems like a much stronger statement than the "manifest was successfully applied/run/executed"

** Section 6.3.1.
Either: 1.  A fallback/recovery image is provided so that a disrupted
   system can apply the SUIT Manifest again. 2.  Manifests are
   constructed so that repeated partial invocations of any manifest
   sequence always results in a correct system configuration. 3.  A
   journal of manifest operations is stored in nonvolatile memory so
   that a repeated invocation does not alter nonvolatile memory up until
   the point of the previous failure.

-- Using "either" typically suggests a choice between two options.  Is this text saying one chooses between three options or all required?

-- Is #2 on this list of the same as Section 6.3's item 3 ("Executing the same manifest on multiple Recipients MUST result in the same system state.").  Is there a distinction being made about being able to reapply a successful vs. partial update?  If not, #2 doesn't seem to be needed because this property is already required per the previous section.

-- Per #2, here reinvocations of partial sequence only need to result in "correct system configurations".  In Section 6.3, the result of an invocation needs to be a "verifiably correct system state."  Recommend consistency. 

** Section 6.4. Typo. Missing spaces (maybe rendering issue?). s/Processor--a/Process -- a/

** Section 6.4.  Editorial?

   current := components\[component-index\]

What does the backslash between the array index mean (aka, why not "components[component-index]"?)?

** Table 1.  I appreciate the pseudo code to explain the commands.  As written some assumptions need to be made about the semantics.  Recommend explaining:

-- assert(): does this returns a Boolean?  Are there side effects like throwing an error?
-- store(): which is the source / target?
-- the syntax of "override parameters" and "set parameters"
-- now(): is a time value?
-- try-each-done

** Section 6.5.  Editorial  
   When a command is executed, it either 1. ... 2.. 3..

Either is typically used for two options.

** Section 6.5
   if component-index is true:

Given that the two previous references to the Boolean value "True" were in uppercase, should it also be capitalized in this pseudo-code?

** Section 6.7
   Advanced Recipients MAY make use of the Strict Order parameter and
   enable parallel processing of some Command Sequences, or it may
   reorder some Command Sequences.  

-- Who is an "advanced recipient"?  Does this phrase equate to a "non-constrained device"?

-- I'm unable to tell, is setting the Strict Order parameter the setting which allows the parallel processing?

** Section 6.7.  The text describes which commands trigger a halt to parallel processing.  Shouldn't Swap and Write also cause a halt?

** Section 7.7.  Is the "Check Slot Condition" the same as a "Check Component Slot" condition (as described in Table 1)?

** Section 8.
   The metadata for SUIT updates is composed of several primary
   constituent parts: the Envelope, Authentication Information,
   Manifest, and Severable Elements.

   For a diagram of the metadata structure, see Section 5.

Doesn't the Envelope contain the authentication information?

** Section 8.3.  Editorial.
   This specification requires Sig_structure to be populated
   as follows: * The external_aad field MUST be set to a zero-length
binary string (i.e. there is no external additional authenticated
   data). * The payload field contains the SUIT_Digest wrapped in a
   bstr, as per the requirements in Section 4.4 of [RFC9052].  All other
   fields in the Sig_structure are populated as described in Section 4.4
   of [RFC9052].

Something appears to be amiss with the rendering in the .txt version of this draft.  It looks like a bulleted list was intended but it came out in paragraph form with asterisks as spacers.

** Section 8.3.
The suit-authentication-wrapper contains a SUIT Digest Container (see Section 10) and one or more SUIT Authentication Blocks.

-- Where does the text describe the input to the digest stored in SUIT_Digest and the input to the SUIT Authentication Block .  Put in another way, what is covered by the digest and signature?

-- Are multiple Authentication Blocks signatures of the same thing with different keys/algorithms?

** Section 8.3
A SUIT_Envelope that has not had authentication information added MUST still contain the suit-authentication-wrapper element, but the content MUST be a list containing only the SUIT_Digest.
Is this saying that a digest is required but signatures are optional?

** Section 8.3
The algorithms used in SUIT_Authentication are defined by the profiles declared in [I-D.moran-suit-mti].

-- I am unsure how to read this sentence.  The reference is informative which suggests I can ignore it as an implementer.  However, the text suggests that the algorithms to use are in these profiles.

-- Why does this explicitly define MTI digest algorithms, but is silent on MTI signature algorithms?

** Section 8.4.4.  suit-text seems to encode human readable text.  BCP 18 (RFC2277) reminds us that "   Protocols that transfer text MUST provide for carrying information about the language of that text."  How does suit-text do that?

** Section 8.4.4

    | suit-text-vendor-domain         | The domain used to create the |
    |                                 | vendor-id condition           |
    +---------------------------------+-------------------------------+
    | suit-text-model-info            | The information used to       |
    |                                 | create the class-id condition |

-- What does it mean to "create a {vendor-id, class-id} condition"?  Is this text equivalent to:

"The domain is evaluated (checked?) using the  'Check Vendor Identifier' condition"

"The information is evaluated (checked?) using the 'Check Class Identifier' condition"?

** Section 8.4.6.  suit-invoke is noted as being OPTIONAL to implement.  How can an update occur without calling this command?

** Section 8.4.7.
   *  The reporting policy

   *  The result of the command

   *  The values of parameters consumed by the command

   *  The system information consumed by the command

   Together, these elements are called a Record.  A group of Records is
   a Report.

-- Would it be more precise to say, "Together, the subset of these elements emitted by the Reporting Engine are called a Report"?  My intent is to emphasize that not all Records have the full collection of records.

-- If suit-send-sysinfo-success is set, all of these fields are returned?  If it is not set (but the command was successful), only the "result of the command" is set?

** Section 8.4.8.1.  Editorial.
   Computing a type 5 UUID
s/type/version/

** Section 8.4.8.2.
   UUIDs MUST be created according to RFC 4122 [RFC4122].  UUIDs SHOULD
   use versions 3, 4, or 5, as described in RFC4122.  Versions 1 and 2
   do not provide a tangible benefit over version 4 for this
   application.

Sentence one says all UUIDs MUST conform to RFC4112.  Sentence two says UUID version 3 - 5 is preferred.  Per the third sentence, why even allow for UUID version 1 and 2.  Couldn't SUIT just required version 3 - 5?

** Section 8.4.8.3
   Private Enterprise Numbers are encoded as a relative OID, according
   to the definition in [RFC9090].

This text seems to make RFC9090 a normative reference.  Is there a reason this reference is not?

** Section 8.4.8.9
   If data is encoded this way, it should be small.  Large payloads
   written via this method will prevent the manifest from being held in
   memory during validation.  Typical applications include small
   configuration parameters.

Is it possible to provide quantitative or qualitative guidance on what "small" or "large" means?

** Section 8.4.8.16.  Is there any additional guidance to provide on how to handle this parameter when parallel processing?

** Section 8.4.9.3. 
This MAY be implemented as follows:

   // content & component must be same length // returns 0 for match
   bool check_content(content, component, length) { int residual = 0 for
   (i = 0; i < length; i++) { residual |= content[i] ^ component[i]; }
   return residual; }

--  Editorial. Please format/indent this code to improve readability

-- Since a normative MAY is being invoked, this is code is now normative.  Please provide a normative reference to the programming language this is showing (C99?)

-- there is a missing semicolon in the variable declaration of residual

-- from the code readability perspective, it's a little messy that residual is declared as int but the return type is bool

** Section 8.4.10.1.  Is there a reason this section repeats normative language on when to support integers, Boolean and an array when it was already stated in Section 6.5?

** Section 8.4.10.2
  suit-parameter-soft-failure (Section 8.4.8.15) is initialized to True
   at the beginning of each sequence.

Is this parameter reset to its previous state after the sequence?

** Section 8.4.10.7.
   When this is invoked, the
   manifest processor MAY be unloaded and execution continues in the
   Component Index.
...
If the executable code at Component Index is constructed in such a
   way that it does not unload the manifest processor, then the manifest
   processor may resume execution after the executable completes.

Why is unloading the manifest processor a normative MAY but the resumption is not?

** Section 8.4.10.  What are SUIT_Parameter_Compression_Info or SUIT_Parameter_Encryption_Info and where are they defined?

** Section 8.5.
   Elements are made severable by removing them from the manifest,
   encoding them in a bstr, and placing a SUIT_Digest of the bstr in the
   manifest so that they can still be authenticated.

Doesn't the signature need to be recomputed if an element is severed?

** Section 9.  Which parts of the three presented models have standardized behaviors in this document?

** Section 10.
-- Does "The values of the algorithm identifier are defined by [RFC9054]" mean that the identifier values comes from the IANA "COSE Algorithms" registry ( https://www.iana.org/assignments/cose/cose.xhtml#algorithms)?

-- The text lists SHA-256 (as a MUST) and SHAKE128, SHA-384, SHA-512 and SHAKE256 (as a MAY).  Does this mean that no other algorithms are permitted?

** Section 11.*.  All of the references appear to be just section numbers.  Should it be section numbers and a reference to this document?

** Section 12.
   A detailed security treatment can be found in the
   architecture [RFC9019] and in the information model [RFC9124]
   documents.

It isn't clear to me if the security considerations outlined in RFC9019/RFC9124 are intended to apply in their entirety.  If not all of them, which ones?  

-- Section 6.1 provides weaker guarantees than suggested in RFC9019:
Section 6.1 of this document says:

   Selecting an older manifest in the event of failure of the latest
   valid manifest is a robustness mechanism that is necessary for
   supporting the requirements in [RFC9019], Section 3.5.  It may not be
   appropriate for all applications.

Here are a few that I found which didn't seem to be addressed:

-- THREAT.IMG.EXPIRED.OFFLINE (Section 4.2.2 of RFC9124):
   If the threat is from a network actor, including an on-path attacker,
   or an intruder into a management system, then a user confirmation can
   mitigate this attack, simply by displaying an expiration date and
   requesting confirmation.  On the other hand, if the user is the
   attacker, then an online confirmation system (for example, a trusted
   timestamp server) can be used as a mitigation system.

How does one represent an expiration date in the manifest? Is there a standardized "online confirmation system"?

-- REQ.SEC.AUTH.IMG_TYPE (Section 4.3.5 of RFC9124)

   The type of payload MUST be authenticated.
   ...
   Implemented by:  Payload Format (Section 3.8), Signature
      (Section 3.15)

Section 8.3 of this document seems to suggest that it is possible to not have authenticated contents (digest only) -- "A SUIT_Envelope that has not had authentication information added MUST still contain the suit-authentication-wrapper element, but the content MUST be a list containing only the SUIT_Digest."
 
-- REQ.SEC.IMG.CONFIDENTIALITY (Section 4.3.12 of RFC9124)

The manifest information model MUST enable encrypted payloads.

...

Implemented by:  Encryption Wrapper (Section 3.20)

This document does not describe any mechanism to encrypt a payload.  Section 3 says:

This specification covers the core features of SUIT.  Additional
   specifications describe functionality of advanced use cases, such as:

   *  Firmware Encryption is covered in
      [I-D.ietf-suit-firmware-encryption]

However, this reference is not normative and isn't consider a core feature.

Regards,
Roman