|
19
|
1 https://datatracker.ietf.org/doc/draft-ietf-satp-core/
|
|
|
2 Document: https://www.ietf.org/archive/id/draft-ietf-satp-core-17.html
|
|
|
3 Title: Secure Asset Transfer Protocol (SATP) Core
|
|
|
4 Reviewer: Henry S. Thompson
|
|
23
|
5 Review Date: Wed Oct 21 17:12:16 2026
|
|
19
|
6
|
|
|
7 *Summary*
|
|
|
8
|
|
|
9 This draft is part of a package of at least three parts, including
|
|
|
10 also _Secure Asset Transfer (SAT) Interoperability Architecture_ and
|
|
|
11 _Secure Asset Transfer (SAT) Use Cases_.
|
|
|
12
|
|
23
|
13 Its aim is to present a concrete instantiation of the SAT
|
|
|
14 Interoperability Architecture in terms of a specific set of message
|
|
|
15 formats. As far as I can tell as a non-specialist, it achieves that
|
|
|
16 goal.
|
|
|
17
|
|
|
18 But in my opinion it needs work on the presentation, particularly in
|
|
|
19 the area of consistency and transparency of terminology, both
|
|
|
20 internally and in relation to the terminology established by the SAT
|
|
|
21 Interoperability Architecture, which I take to be the senior party in
|
|
|
22 the trilogy.
|
|
|
23
|
|
|
24 All of my comments below under 'Minor points' bar the very first are
|
|
|
25 there, rather than under a more serious heading, only because this is
|
|
|
26 a matter of presentation, not substance, but I think it's important
|
|
|
27 that they be addressed.
|
|
|
28
|
|
19
|
29 *Minor points*
|
|
|
30
|
|
|
31 1.
|
|
|
32
|
|
|
33 The restriction to just HTTPS with TLS1.3 is almost certainly not
|
|
|
34 what you want. The use of HTTP/2 or QUIC, which requires use of
|
|
|
35 TLS1.3, should be allowed.
|
|
|
36
|
|
|
37 In the Introduction, all that's needed is something along these lines:
|
|
|
38
|
|
|
39 Secure transfer mechanisms such as HTTPS with TLS no less than 1.3
|
|
|
40 must be used.
|
|
|
41
|
|
|
42 5.3.9 and 5.4 can actually be simplified by switching to language
|
|
|
43 which allows for successor messaging systems which offer the same or
|
|
|
44 better security than HTTPS with TLS1.3.
|
|
|
45
|
|
|
46 There might be an argument for a SHOULD support HTTPS with TLS 1.3,
|
|
20
|
47 but only if there is a strong case for encouraging interop between
|
|
|
48 different gateway implementations.
|
|
|
49
|
|
|
50 5.3
|
|
|
51
|
|
|
52 The use of the word 'client' here and and client/server terminology
|
|
|
53 in 5.4 is unnecessarily confusing with respect to the use of
|
|
|
54 'client' as defined in section 3 and used in section 4 (the SATP
|
|
|
55 model) and 5.3.8.
|
|
|
56
|
|
|
57 The fact that 'client' is used with two different meanings in the
|
|
|
58 section headings of 5.3.8 and 5.3.10 illustrates this unnecessary
|
|
|
59 confusion.
|
|
|
60
|
|
|
61 ARCH uses 'client' only in the 'client application' sense, and
|
|
|
62 'server' not at all, and it would be a good idea to stick with that.
|
|
|
63 Following ARCH, Section 3 defines "sender gateway" and "recipient
|
|
|
64 gateway" and I would very much encourage their use throughout, as
|
|
|
65 already done in 5.3.2.
|
|
|
66
|
|
|
67 For example, 5.3 para 1 could read
|
|
|
68
|
|
|
69 SATP messages are exchanged between peer gateways, where depending
|
|
|
70 on the message type one is the sender gateway and the other the
|
|
|
71 recipient gateway.
|
|
|
72
|
|
|
73 and in 5.3.9
|
|
|
74
|
|
|
75 If the sender gateway transmits a list of supported credential
|
|
|
76 schemes, the recipient gateway selects one acceptable credential
|
|
|
77 scheme from the offered schemes.
|
|
|
78
|
|
|
79 and in 5.3.10
|
|
19
|
80
|
|
20
|
81 *5.3.10. Sender Gateway Offers Other Supported TLS Schemes*
|
|
|
82
|
|
|
83 If a sender gateway wishes to use TLS schemes other than the basic
|
|
|
84 scheme (AES-128 in GCM mode with SHA-256), then the gateway may
|
|
|
85 may choose to send a JSON object listing the client's supported
|
|
|
86 TLS schemes.
|
|
|
87
|
|
|
88 Also, later on the terminology used changes from 'recipient gateway'
|
|
|
89 to 'receiver gateway' -- this should be reverted throughout.
|
|
|
90
|
|
|
91 5.4.1
|
|
|
92
|
|
|
93 See above. Here's a simpler version of this whole section:
|
|
|
94
|
|
|
95 5.4.1. Protocol requirements
|
|
|
96
|
|
|
97 Gateways MUST use a secure protocol, HTTPS or successors, in this stage.
|
|
|
98
|
|
|
99 Gateways MUST use the HTTPS POST method or equivalent idempotent
|
|
|
100 [RFC 9110] method in this stage.
|
|
|
101
|
|
|
102 7.
|
|
|
103
|
|
|
104 remove ' (client)' and ' (sender)'
|
|
|
105
|
|
|
106 8., 9., 10.
|
|
|
107
|
|
|
108 remove and/or replace 'client', 'server' and 'receiver' so that all
|
|
21
|
109 and only 'sender gateway' and 'recipient gateway' are used.
|
|
|
110
|
|
|
111 8.3. and others
|
|
|
112
|
|
|
113 Starting here there are many sentences of the form
|
|
20
|
114
|
|
21
|
115 "This message is sent from ... to the ... Endpoint at ... ."
|
|
|
116
|
|
|
117 The typography implies that these are formal properties of SATP, but
|
|
|
118 as far as I can see there is no definition of 'endpoint' or how the
|
|
|
119 many different ... Endpoints are to be identified between the two
|
|
|
120 gateways. Is this information meant to be included in the 'transfer
|
|
|
121 context' as defined in 5.3.6?
|
|
19
|
122
|
|
22
|
123 8.4. and others
|
|
|
124
|
|
|
125 8.3. and 8.4. define the *Transfer Proposal Message* and *Transfer
|
|
|
126 Proposal Receipt Message*. There are a number of message pairs with
|
|
|
127 similar pairs of names, with the second part being variously named
|
|
|
128 ... Receipt Message or ... Response Message.
|
|
|
129
|
|
|
130 Language along the lines of "The message is sent from the [recipient
|
|
|
131 gateway] to the ... EndPoint at the [sender gateway]" appears in
|
|
|
132 many if not all of them
|
|
|
133
|
|
|
134 It's never made clear if this just e.g. requires *Transfer Proposal
|
|
|
135 Receipt Message* as the form which the HTTPS response body should
|
|
|
136 adopt when responding to an HTTPS POST request in the *Transfer
|
|
|
137 Proposal Message* form or, as I read it at first, actually means a
|
|
23
|
138 _separate_ HTTPS POST request in the *Transfer Proposal Receipt
|
|
22
|
139 Message* format is sent from the recipient gateway.
|
|
|
140
|
|
|
141 That is, are we being told about a single HTTPS exchange, or two?
|
|
|
142 Or is the intent to allow for either? I think either at the
|
|
|
143 beginning of section 8, or somewhere earlier, perhaps section 6,
|
|
|
144 this should be explained. Indeed Figure 2 in section 6 might
|
|
|
145 encourage one to think that the Transfer Proposal exchange requires
|
|
|
146 one HTTPS exchange, whereas the Lock Assertion exchange involves
|
|
|
147 two.
|
|
|
148
|
|
|
149 11.
|
|
|
150
|
|
|
151 The discussion of time-outs and aborts leaves it unclear whether a
|
|
|
152 gateway which times out waiting at some point in a session should
|
|
|
153 send a session-abort-msg or not, but I would think it should.
|
|
|
154
|
|
|
155 Note that the phrase "time-outs due to gateway crashes" doesn't make
|
|
|
156 any sense: from the point-of-view of a gateway (G1) which times out
|
|
|
157 waiting for a response, there is no way to detect the _reason_ for
|
|
|
158 the timeout. In case a timeout is _not_ because of a crash on the
|
|
|
159 part of the other gateway (G2), surely notification that the session
|
|
|
160 is being terminated by G1 should be sent, to enable an orderly
|
|
|
161 close-down by G2, instead of it having to time-out itself.
|
|
|
162
|
|
19
|
163 *Nits*
|
|
|
164
|
|
20
|
165 3.
|
|
|
166
|
|
|
167 Since you use them both, I suggest including the ARCH definitions of
|
|
|
168 'originator' and 'beneficiary' here.
|
|
|
169
|
|
|
170 5.3.15
|
|
22
|
171 immobile => immobilize [twice]
|
|
20
|
172
|
|
|
173 'uses Hashed Time-lock' => 'use Hashed Time-lock'
|
|
|
174
|
|
21
|
175 8.1., 8.2., 8.6., 9.1, 10., 11.3., 11.4.
|
|
|
176
|
|
|
177 must => MUST [throughout]
|
|
|
178
|
|
|
179 8.4., 8.6. and 9 others
|
|
|
180
|
|
|
181 The example JSON ends with a comma, which is strictly speaking not
|
|
|
182 allowed, and may cause errors in some tools (e.g. jq). It would be
|
|
|
183 best to remove them.
|
|
|
184
|
|
|
185 11.3.
|
|
|
186
|
|
|
187 The example JSON is missing a comma after
|
|
|
188 "urn:ietf:params:satp:core:msgtype:transfer-proposal-msg"
|
|
|
189
|
|
22
|
190 11.3.
|
|
|
191
|
|
|
192 errror => error
|
|
|
193
|
|
|
194 11.4.
|
|
|
195
|
|
|
196 I think *Protocol Error Codes* would be better...
|
|
|
197
|
|
|
198 11.5.
|
|
|
199
|
|
|
200 'maybe' => 'may be'
|
|
|
201
|
|
|
202 12.
|
|
21
|
203
|
|
|
204 'such a' => 'such as'
|
|
|
205
|
|
19
|
206 15.1
|
|
|
207
|
|
|
208 RFC 8446 is obsolete, should refer to 9846.
|
|
|
209
|
|
|
210
|
|
|
211
|