*Section 4*

This section defines the messages sent between clients and logs, thus defining the interface to logs.

There is an admonition to ignore fields that may appear in "... JSON objects and URL parameters..." that are not specified in this section. Ought the "should" be a "SHOULD" or a "MUST"?

The texts says "The <log server> prefix can include a path as well as a server name and a port." Should the "can" become a "MAY"?

Since human-readable error messages are to be returned, is the intent that people will need to deal with these errors? Shouldn't there be an enumerated list of errors for each operation, to enable client software to figure out what the log server didn't like about a request, without requiring human intervention? Creating a list of errors for each type of transaction would make the checks performed by a log server more obvious, a concern I note below.

The introduction for this section should note the unusual convention adopted here, i.e., putting a version number into the URL for the POST, as a way of indicating what version of a data structure is being submitted/retrieved. This does mean that a log client has to track this information when maintaining a returned data structure, since it is not embedded in the structure per se. It would be useful to describe the rationale for this design choice, vs. the more conventional approach of embedding the version number inthe data structure itself. One could do both, to provide redundant means of determining when a server returns the one version of a data structure via a URL that indicated a request for a different one (or vice versa for a client that is confused).

The subsections of 4 do not specify checks to be performed by the log server or the client with respect to message parameters. This seems to be an oversight. For example, in 4.1, I would expect the log to verify that the certificate chain terminates in one of the TAs it supports, and that the certificates do constitute a certificate chain. The text in 4.1 says what the input is expected to be, but does not indicate that the log server actually verifies this.

Why is the log ID base64 encoded?

In *Section 4.1*, it seems a bit odd to specify a base64 extension for which no further syntax is defined. Is it defined elsewhere in this document?

Is it a good idea for a client to accept an SCT that it cannot parse? If the version of the SCT returned to a client is not one a client understands, the client has no way of knowing whether a TLS client can understand it. This postpones the time when the returned SCT might be treated as broken. This doesn't seem like a good idea. It also raises the question of how SCT version changes are expected to be coordinated among logs, log clients, TLS clients, Monitors, etc. This architectural issue should be addressed somewhere in this document.

In *Section 4.3*, the encoding for the timestamp is not specified here.

Why is the instance of a tree specified by the tree size? If a new STH is issued before any new entries are added, the tree size will be the same. Would it not be clearer to use a serial number or timestamp tree instances?

In *Section 4.4*, there is a note that the two trees must (MUST?) be from v1 STHs. This raises the question of how the system deals with a request to acquire a consistency proof between two STHs that span a log version transition. Please address that issue.

There should be a description of what a log server does to satisfy this request, and how it replies if one or both of the specified tree sizes do not correspond to the specified tree heads according to its records. (This raises the question of whether there might be a preferable way to refer to STHs, e.g., via a timestamp or serial number, as noted above.)

In *Section 4.5*, there is another reference to a v1 STH. This raises the same sort of questions I noted in my comments on Section 4.4 above. The terms "leaf index" and "0-base index" are used, but they do not seem to have been defined previously.

In *Section 4.6*, the term "0-based" index is used, as in Section 4.5. The v1 vs. later versions issue arises here, as in Sections 4.4 and 4.5.There does not seem to be enough detail in the description of the processing to be performed by the client. Perhaps an appendix is needed to provide the details. If a client requests more entries than a log operator is willing to return, should there be an explicit error indication, rather than just returning the server's max size? Should the limit on entries be part of the server information that is retrievable, like the list of supported TAs (see Section 4.7).

*Section 4.8*Since the tree_size is required to refer to an existing STH, this is an example of where a specific error return could be defined, to signal that the supplied input parameter is in error.

_______________________________________________
Trans mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/trans

Reply via email to