Re: [Sat] my (hats off) review of satp-core-02

Thomas Hardjono <hardjono@mit.edu> Thu, 14 March 2024 12:52 UTC

Return-Path: <hardjono@mit.edu>
X-Original-To: sat@ietfa.amsl.com
Delivered-To: sat@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 9EA31C14F5F7 for <sat@ietfa.amsl.com>; Thu, 14 Mar 2024 05:52:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.105
X-Spam-Level:
X-Spam-Status: No, score=-7.105 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, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01, 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=mit.edu
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 kz6cZDuMJjKf for <sat@ietfa.amsl.com>; Thu, 14 Mar 2024 05:52:45 -0700 (PDT)
Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2102.outbound.protection.outlook.com [40.107.237.102]) (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 4ADFDC14F5EE for <sat@ietf.org>; Thu, 14 Mar 2024 05:52:45 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hPoV2nUhgi90yBglJGD98TsKKxaJn/8QS+gqtOstpdx7cvmwHAbx2Jf9rHj83Lv+NZa5gvNnK/fAPyU+agtewsfhqroZ56iAQg9uiYaoMISeg98I0YUt7Rdfw9Tp4A7zQ6iC8Tyx+fbtlPAmPpjktGiXTKWrvz+7yhqDzbHojiyuBagQx8BaTHF3w2lldBI6So1TbzofC02+9NnLHSXaw1tjifMexpyLGV3fDoRsHvJISWd/cNCpqpflSJVeH5BQZQUsu17V3PMFL8iXuAILlDINFvS9OaLKkIG7X2HkV6E/2aIfm+zXboQdshsyQoubksX99xYEvUUf3iL4cThRhA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=9W4/4XlxGB/P7wEKpHwKk5clgwGk1uMyyf5O71BZJrc=; b=Tj0VUHD19Nqvvm97I5V8MumnQUt4+b5VLMXH9YGD0W0/7K6M9dtf1pHP3O093RDXovTV2Y6FVLg13jKziVlyN5n0tGACrMD58WN+utmH3MND/ffLhTDjJIssvJnrXEqRw+gh4WtDjWe1Xnwtnm+OO/zTPsVTDWdTRQx6M4ZAG+f9CeKOhNq7WEjX8rJEGOUaRF3AHmQqaQgeGvIzGCiGsfGcBbQG1Dl2IM+HLFEckE5BNDpGYyO5XuBwMRooG4R5+jVoRPVbC2sauMPQgEPgwyjmSMxdeY+8T+3ZyXabd7ASt3iuamzhcUrLsA2D/TE1qhHGxWrBfHXliL1LCvf3RA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mit.edu; dmarc=pass action=none header.from=mit.edu; dkim=pass header.d=mit.edu; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mit.edu; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9W4/4XlxGB/P7wEKpHwKk5clgwGk1uMyyf5O71BZJrc=; b=C5lsIlxd/aGAiv3flo/ZHKYk2J5QKyaPAIcWoaG2VVmfl8JRMhS7R016mLHSX2nOiDIZUd+5vDUaenPsgsvXTqhK/7HarH9rhYwBqVbccMR6slC+zOOgiqzuW5NGRTWtLaXVLk+7gg424wQHZ4zXdIDIXiI0pOcUDsbaRF4Rt9s=
Received: from DM6PR01MB4395.prod.exchangelabs.com (2603:10b6:5:7a::16) by BN0PR01MB7070.prod.exchangelabs.com (2603:10b6:408:148::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.20; Thu, 14 Mar 2024 12:52:42 +0000
Received: from DM6PR01MB4395.prod.exchangelabs.com ([fe80::e4f9:514d:5169:6582]) by DM6PR01MB4395.prod.exchangelabs.com ([fe80::e4f9:514d:5169:6582%5]) with mapi id 15.20.7386.017; Thu, 14 Mar 2024 12:52:42 +0000
From: Thomas Hardjono <hardjono@mit.edu>
To: Wes Hardaker <wjhns1@hardakers.net>, "sat@ietf.org" <sat@ietf.org>, Thomas Hardjono <hardjono@mit.edu>
Thread-Topic: [Sat] my (hats off) review of satp-core-02
Thread-Index: AQHaQDVltQVKpDZtJEqY35iaqLhelLE0nds1
Date: Thu, 14 Mar 2024 12:52:42 +0000
Message-ID: <DM6PR01MB4395E9BF52B2DE42280BD2D9CB2B2@DM6PR01MB4395.prod.exchangelabs.com>
References: <yblr0iv2u80.fsf@wd.hardakers.net>
In-Reply-To: <yblr0iv2u80.fsf@wd.hardakers.net>
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=mit.edu;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DM6PR01MB4395:EE_|BN0PR01MB7070:EE_
x-ms-office365-filtering-correlation-id: 312c5861-1690-49bd-60e6-08dc4425a355
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: ++4IBegk27P2xyv5g4IMI9vPuf7echxSp+6AtqE1eaDepSkwyx80wBlOyvRGIxbFqThuX9FvANVOlAUiBEr/bE/lLDNtOdOjCsDQAKN/iBM3avzhLtRhaqSwmEzBQCOnWzU/gIXHFduYVlprNGREmjYDwWSQgTWwut7oT8R/v3yaXX5HuaWk22Zvx2EJXgmlfm8/M+lcnNTNKscrlUFt6Tr464Bn6UikjkLfEHvN7+2rPbgtNNIoo5Ct6VC4iegYAgqvoPKkFEtqHkiDQz8WSkwVqIAh+MVUmNhjROq1w3sRz7KsuHd9Kl1zUlT57DDQdsT2Pk13Iv8TAhci6AfHZw8JvUDYucBQ7MyLwgiwIBCVJ0DjiHhMN4IdKytSZi8xs7r3rdDves6dWfAeOKSVZtXCEMHuxQypZ9lUNB9fSkWJN6Y8kNDkI2NLU2Zuw7/iXO25bAU1vAoqI68/JxSF8T+888X1pbmYd2qKDL+LCzEfuvzyREvDGM3dP86mL9A7YZ+AjQOVxxNke9EadG/u2Gq0QFUtdE03xc1DLgW7/Eh0PSRsYUPpKRb6D0xS0JDakA9vynfVDUjSm8NrWvmiuUUPHrdFHN6avwKjoFNE8zck9p7bInNGh/7tPexv3vv9W6TDak83j2HG+ugc4+HXwR8oflt9BujjPN/zguYG9Z0=
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR01MB4395.prod.exchangelabs.com; PTR:; CAT:NONE; SFS:(13230031)(376005)(1800799015)(38070700009); DIR:OUT; SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: 8rf03G0eCRiyYe7XOahrp1XAY2xRsEeOLALnHikdzBG7kmE8I+j95NlYOVOxeC0xSj5akM6FJg2zrQn7fZhQv3EeYNUUYCFl7JcjzX4cXMNF39Lmc/usbzpNtCh+th4WHJ8qd+FtFr+P31o/2MOLeb3oaH+q+Ls1hBO3HvSE04wudbaOPFVj1xL7Wj0cbODGnG6DegmUwhlCOrqEn8Ov0esT5rn9A7hSIc7OlfgGAz9958ORHdodBiIDI77xXkSdxszGq89HM6cAzQpcNZGh1ONuRrg/SO86H+VXXw4Sb3AIM4G7NdqPv/aqTJwEdGXTXkLLLHRRS5Gk6HjxiHibPfqcP6DinEBRSImB+JRRvJa4ujXtdLsVPLvVY76310HbqdDtFXZqDpOjNxsbjLZC1xG3NzXYh206yvnQX6AP9KwyKNS+nwX5HYZcKIAf8MRKySQ7D6hlRAdKKSz8pmuTcnVVNKjcF/j5oRTOuDl2fvOsKDmUyGD9sqrVemx2xvsliB6Ov8X9AuA+0L9LDsD13OqzpGSR2pp0pdVcZJWb4lzsRUqf5UbqnGc5LDdeyBQNp+WFTAIIkv+hMKbGDzK9SBrq5i7XLBi/sLNpkjxDQzCFMrURg8fflAQh+G3vfAVejVl1JMlNA0+5s3Fp1XDa7iUeTMatHO8vmoAP6UpbA0U6L+0Y+elj9AyIDHA81QXISvxZTk4v8bgu7BdCbOL6NNCyeyRfiHxS51QkBuT8ZnIpVHFcBa25vdIdmqOVKBTFrlZ7vJ4EECvNg55+iZ8+o9SC10wYJsJe9567lgwebZ4r9WgtlVBhPqYvlpRIC5oACayi9LB7d7nkezOKIHxEN055ZWmZIlJuGum7wwr3xx5kM+aKJaAmxmp1fYtt12vOcGwr4SlfGCmr6niw67MTVFa4aG4FJ7oCg9Ye6u8xLXZQv/7pjl1L2aQ0LShZcy101gh250canJfChxnWPVRfHCM60+I5sliAoKTegcDG4lmiNrT6yJo2OepKVzYVVJHlc1Bi++t+WtdPgH7rjD5x4zMk+X4aR/tqMn9tm2qM0B78fYhgRp9sxDwysr9ZFyp1YCaFqpkdCEgkkYmu8ClUy9lXZXYfB+2qbIimzSKxToRmZV5QziOcFM1Ipmk4wRrmwNbkxfANvB6ocKek+uwww7UGgYEC7Tm0kPqc5JQ3jnDQ11qRDplpnVJyZwXppC93r3LSDyqdhXiDC7AUiSkyFTNPsVmV1bXjEqaqiq2K6i5tcddul5wBdOlaQuNpYSNIWPFu6DB3ZyLe4w19zY3Y5Xje2EeHNG74N4Jvx21xDXi/3175bfW6A7oE5eih083kdLDctk30CVeDfoE6c3jgQQn97G9x1XcdfLgUWRjODQxGtfiHDmKMBrdYMS5sSFh4DIxy7n0l41DA6Xj7o6hQVKD0xFt8poqSIzWMj+regsBHjBd0bf8UfXuta09GV93ZCjNtrBAzoHAnDIykdW2akdwiuRCOD3JPUnkjzZ7rBtT4tfniuQPT/wTZL6IrhVL4u4GGWiJ/C5i7zVGQzOvtT8cRVV/82cywPA9i+nJB2vPygxV9k6Qd2Gc0tyEwYSDORIP4mgyHh1lqKnSDlGavFXjCwVj42XeLhIc7hmsheCo7xnnbr+t+JzuvXKoU01K5
Content-Type: multipart/alternative; boundary="_000_DM6PR01MB4395E9BF52B2DE42280BD2D9CB2B2DM6PR01MB4395prod_"
MIME-Version: 1.0
X-OriginatorOrg: mit.edu
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: DM6PR01MB4395.prod.exchangelabs.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 312c5861-1690-49bd-60e6-08dc4425a355
X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Mar 2024 12:52:42.4075 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 64afd9ba-0ecf-4acf-bc36-935f6235ba8b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 1S3JDRUOnSTG5Ncg5+AhCPyQ8x77jJLWYh7Gt2FcRI9zZJk18HG9jee3bqbhxOFuTT8mxerPI369tgi9pF6Rlw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN0PR01MB7070
Archived-At: <https://mailarchive.ietf.org/arch/msg/sat/Ief3Gb-eXKQFqB-vLZnQz9T3lnw>
Subject: Re: [Sat] my (hats off) review of satp-core-02
X-BeenThere: sat@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: "The purpose of this mailing-list is to discuss the secure asset transfer \(SAT\) protocol and related aspects." <sat.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/sat>, <mailto:sat-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/sat/>
List-Post: <mailto:sat@ietf.org>
List-Help: <mailto:sat-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/sat>, <mailto:sat-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 14 Mar 2024 12:52:46 -0000

Hi Wes and folks,

The authors of SATP-Core are going through Wes’ comments and making updates on the draft (in the Gitbub repo).

One of the fundamental questions related to SATP-Core draft concerns which messages/APIs are being described in the Core draft.

In Figure 1 of core-02, there is a diagram that describes the three (3) types of APIs (API1, API2 and API3).

For the gateway-to-gateway interactions for the asset transfer, it is API2 that we are concerned about.

However, in looking at the entire core-02 there are parts which concern API1 and API3. For example, Section 5 talks about the Developer URN, Credential profile, Application profile, etc.

These items are not actually communicated in the payloads between gateway G1 and G2 (in the flows described in Section 7, 8 and 9 of core-02).

My question:  should these items be moved to a different document that would deal with the Application-to-Gateway interaction (via API1) and Gateway-to-ResourceServer (via API3) ?

This approach would allow us to focus the SATP-Core document on messages and payloads that concern only the actual asset transfer interactions.


What do folks think?


PS.  Thank you to Wes for a very extensive review. It really helps.



Best
--thomas




From: sat <sat-bounces@ietf.org> on behalf of Wes Hardaker <wjhns1@hardakers.net>
Date: Friday, January 5, 2024 at 7:15 PM
To: sat@ietf.org <sat@ietf.org>
Subject: [Sat] my (hats off) review of satp-core-02

I set out to review the current state of the satp-core document with
an eye on "how close are we".  I took a bunch of notes (and took a lot
longer to write them up, sorry).  The following are my notes and
thoughts, but should be taken as if I'm a regular technical
contributor (IE, my SATP chair hat is OFF) -- thus, feel free to tell
me I'm absolutely wrong on some of these points.

The only real "chair" level comment that I feel obligated to make is
that the model (shown in figure 1 and described in 4.3 talks about the
APIs between the gateways and the clients as being "REST APIs".  This
particular part of the model is out of scope of the current charter,
and thus we shouldn't specify that they must be REST based.  Rather,
they're "implementation dependent" at this point.  You can say they
must be implemented in a way that does not disrupt how the SAT
protocol is expected to function though.

Also, note that we'll need IANA registries for some of these values, as well
as a definition for what it takes to add items to the registry.  I can
certainly help with this as we get closer, but it's worth thinking
about now.  (eg: "application/satres" in an existing table)

Also [I'm coming up with more chair comments as I transcribe my
notes], we shouldn't use existing company names in the examples.
Instead, use strings with "example" in them ("example", "example.com",
"network1.example.com", "example1 network", ...)

------

Note: this was a review of -02 specifically

First and foremost, excellent job getting started on this critical
document for the WG.  There is a lot of material in it, and it's a
good solid base.  Having said that, I do find a number of issues that
would likely come up in interoperability tests due to lack of exacting
detail in how things are defined.  Some of these notes below are
simply nits or suggestions, and others are a bit more critical
(especially with an eye toward interoperability).  The rest of this
will sound rather long and detailed with problems, but first please do
note that it's a great start.  I just got out my red pen for
improvements :-)


General notes:

- One thing I find missing the most is the flow diagram indicating the
  message sequences that are expected between the client gateway  and
  the server gateway.  I know this is being worked on heavily (and is
  near done?) but should be included at least in text, if not in
  graphical form.  Depicting the right sequence from section 7 alone
  could be challenging without it.

- In general the JSON descriptions could use improvements.  The IETF
  requires fairly exacting specifications to ensure everyone encodes
  things in the same way.  I encourage you to look at something like
  RFC8620 as a template (JMAP - the JSON based replacement for IMAP).
  Note in particular how section 1 is laid out that spells out how the
  rest of the document should be interpreted, including how all named
  objects have an associated datatype (eg "UnsignedInt").

More specific:

- I do wonder if "API Type 1" and the new identifier design team's use
  of "type 1" will also confuse people at some point.  Because of this
  it's critical to always have some qualifier in front of the "Type N"
  expressions.

- There is some usage of "flows" (eg 4.4) and other times "phases" (eg
  5.1).  It would be best to be consistent with these.

- Section 4.5 is rather terse and the purpose of it is unclear -- it
  needs an intro at least.  Also "authorisation" is misspelled.

- Section 5.2 indicates that SATP is between "applications (clients)"
  and "gateways (servers)".  This is incorrect as it's only gateway to
  gateway, but one gateway is a client in the protocol when it's used.

- Section 5.2 has a bunch of mandatory fields, some of which contain
  spaces and others don't.  The most confusing being "Action/Response"
  -- is this a json field name?  These don't match the format and
  style of the 7.* names.

- Section 5.2 describes a message format, but it's unclear how this
  meshes with Section 7.*.

- The Version field is a good example of underspecified.  How is this
  encoded?  "(major, minor)", "major.minor", "[major, minor]",
  "{'major': major, 'minor': minor}"?  Also this should define the
  first version to be used (1,0?) for this version of the protocol

- 'Message Type': what are legal values and where are they specified?
  If they're later (eg, 7.*, reference this)

- session ID and transfer-context ID - it would be helpful to know
  whether the client or server will be creating these (or both if
  bidirectional values -- but if so, how does one indicate "yours" and
  "mine").

- The resource URL and developer URN are vague in their definition and
  purpose.  Also, a URN is not an "assertion"  -- maybe "an identifier
  string defined by the developer" or similar

- is the sequence number actually needed?  If so, why (if within an
  encapsulated session over TLS, eg)

- I'd suggest looking at existing javascript frameworks for
  authentication (eg, look at what JOSE did here)

- The Payload for POST, responses and local networks -- how will a
  receiver know how to interpret this?  is this dependent on the
  "mesasge type" field?  If so, say this and reference where the
  definitions are.  Also, it's unclear why "local networks" is in
  here.  If we have message types that can be privately specified,
  then we need to be careful how we say this.

- 5.3.1: why is validation just a MAY? if not at least a SHOULD/MUST?

- 5.3.2: what if the gateway doesn't have a real DNS domain?  (we
  *can* require this, but not everyone may want this requirement)

- 5.3.3: Having this be a alphanumeric or hexidecimal value does not
  work well with interoperability.  How do you know what deadbeef is?
  Even "0xdeadbeef" can technically be either.

- 5.3.4 - this format is specific to the sending network?

- 5.3.5 - it would be good to break this example down into the
  components previously described

- 5.4.5 and 5.3.5: it might be best to move the example into the intro
  for the section

- 5.4.1: "any scheme for identifying gateway owners may be
  implemented" -- this does not bode well for interoperability

- 5.4.1: validate wit the issuing authority -- what authority and how
  will I know what the issuing authority is?

- 5.4.3 put a (OU) after the first usage of "Organizational Unit" so
  that it can be used later in 5.4.4.

- 5.5: this is a bit underspecified and unfinished

- 5.6 needs an intro -- this is also where understanding the full
  sequence of steps becomes critical

- 5.6.1: you should specify the minimum version of TLS and leave it at
  that -- the TLS specs already talk about downgrade resistance, etc.
  Just say "TLS 1.3" and be done :-)

- error handling is more generally needed as well.  I know this is
  being worked on, but if nothing else describe at a high level what
  happens when you fail to parse a message and what happens if you
  can't act on it (abort and close the session, eg).  More likely, "if
  after point X" may do something different because the asset was
  burned, eg.

- 7. you might consider just using HTTP POST.  There isn't a great
  benefit to supporting both GET and POST (very much IMHO).  If you do
  use GET it should be really for information retrieval, not for
  "send[ing] messages".

- 7. "the client and server **may**" be required to sign certain
  messages -- IMHO, this needs to be better described exactly when
  this is expected/necessary.

- 7. the note about nonces are not shown is not needed, as you're
  really not showing anything about TLS -- just the encapsulated
  messages.

- 7.1 and beyond: suggest using "parameters" or "fields" instead of
  "artifacts".

- 7.1 and beyond: examples would be highly helpful here (like the one
  in 7.6)

- 7.6 I note that the example in 7.6 doesn't have all the items in
  section 5.2 :-)

- I did not fully review section 7 as too much of my previous comments
  may affect my review depending on how they're handled.

- section 11: IMHO, the errors need to go in a normal section.
  Appendixes are not normative.  (and this is an example of where
  we'll need our own IANA registry table)

- section 14 ("appendix A" which is actually a section anyway):  the
  encoding and usage of these errors is unclear.



--
Wes Hardaker
USC/ISI

--
sat mailing list
sat@ietf.org
https://www.ietf.org/mailman/listinfo/sat