Affects Version/s: csprd03
Fix Version/s: None
Received thru the DSS-X public comments list from Juan Carlos Cruellas on the 2019-03-18:
COMMENT 2. I am concerned about the change in the VerifyRequest, which allows now to include more than one signature, if it works as I think it works. I have understood that this allows a client to explicitly list more than one signature in a VerifyRequest. I understand that then the core mandates that the server validates all the listed signatures, and that also mandates that the server generates the corresponding optional outputs generated during the validation, following the rules mandated by the XML schema.
If this is what this version of the core states, below follows the rationale for my concerns:
RATIONALE. A. This change breaks a long tradition of "keep the core as simple as possible and leave special things for profiles/extensions", which was the followed approach since the very beginning of DSS TC. I was the co-chair of the TC which generated the first version of the core. This topic, i.e., the possibility of dealing with more than one signature in one validation request, was discussed in depth within the DSS-TC, and the unanimous view of the members was NOT to allow the possibility of including more than one SignatureObject in the validation request. As certainly a document could contain more than one signature, the final decission adopted by the TC was allow that a server could validate all the signatures present in that document under certain circumstances, and generate a global result notifying whether all the validated signatures were valid or not, and then provide, within the individual optional outputs, details of the validation of *the* signature explicitly mentioned in the SignatureObject of the request. RATIONALE: nobody wanted to create, at that time, a core protocol that should have to deal with linking each optional output to the signature whose validation generated such output.
During years the community has used this protocol, and, indeed, is now requesting more features, among which, the capability for indicating, within a request, which signatures the client requests validation....BUT I disagree with the adoption the DSS-X has taken, which is just to complicate the core. Instead, I am in favour of having an extension of the core that allows this.
This was exactly the decision ETSI ESI TC took when facing this situation in a workshop for dealing with standardization in the area of validation services. ESI produced a profile/extension of the OASIS core which incorporated:
i. Mechanisms, in the request, for identifying which signatures the client wants the server tries to verify among all the ones present in the document(s) submitted.
ii. Mechanisms, in the response, for linking each optional output generated during the validation of ONE signature, TO THAT SIGNATURE, so that, if the request mandates to validate two signatures and requests to return the SigningTimeInfo, the response *CARRIES TWO SigningTimeInfo* and *EACH ONE IS CLEARLY LINKED TO THE CORRESPONDING SIGNATURE*. This is what the stakeholders requested, a clean way of requesting validation of several signatures, and a clean response for the validation details (i.e. optional outputs) are grouped in elements that correspond to each of the signatures validated. And all this done without perturbing the core.
RATIONALE. B. The potential presence of several SignatureObject elements in the VerifyRequest generates something extrange. In fact, it could even be considered a standardization flaw, or at least an ambiguity. According to the XML schema and the written specs, If I correctly understand them, only one SigningTimeInfo can be present in a VerifyResponse. Now, imagine that the VerifyRequest has 4 SignatureObject, and the optional input ReturnSigningTimeInfo. The request is requesting to validate 4 signatures. The request is requesting to return the signing time info......AND THE RESPONSE ONLY HAS THE POSSIBILITY OF RETURNING ONE SigningTimeInfo. You could say, "well, in core version 1.0, the VerifyResponse also usually contained only ONE SigningTimeInfo"; true, but the key point is that in core v1.0 it was pretty clear that the SigningTimeInfo was the signing time OF THE SIGNATURE within the SignatureObject, so the response did not have any ambiguity at all: the server accepted to validate N signatures, and provided: full details of 1 signature (the one in SignatureObject) and just a yes/no for the rest
or even less than that, if some failed). IF YOU CHANGE THE CORE TO ADMIT MORE THAN ONE SignatureObject, the SigningTimeInfo is the signing time of which signature of the N signatures present in SignatureObject and validated? This is not indicated anywhere in the document. And to me this seems quite a flaw (or at least an ambiguity) that should not be kept in a standard. And the same happens with every optional output that reports on certain aspect of the validation of one signature.
I see several options:
1. Remove the possibility of several SignatureObject, because there is a profile/extension of the OASIS core developed by ETSI ESI which already satisfies the requirements expressed by stakeholders on the need to be able to request to the server the validation of several signatures. This is to me the most reasonable solution.
2. Persist in keepting the possibility of having more than one SignatureObject. In this case you will have either:
2.1 To allow more than one instance of optional outputs like SignatureObject in VerifyRequest (change in your XML schema), and add a mechanism for linking each optional output to the signature whose validation has generated it. If you go in this direction you will be generating a protocol that offers a feature that ESI profile/extension of DSS OASIS protocol already offers: I do not see any benefit neither for OASIS, nor for ESI, and what is more important, nor for stakeholders. At present the situation is clean and easy to understand: if you have enough with the OASIS core protocol, use it; if you need to be able to identify a subset of signatures for validating, and that the server returns details of *all the signatures in the subset*, use the ESI profile/extension of the OASIS protocol....everyone wins.
2.2 To just circumvent the problem saying something like: well, there will be only one SigningTimeInfo, and this will be the signing time of the *first* signature within the SignatureObject. To me this is a completely unsatisfactory situation: you would have changed the XML schema of the core just for allowing to identify some signatures, and the rest would have remain the same as in core v1.0....what would be the benefit of this?
I consequently kindly request that you drop the possibility of including more than one SignatureObject in the Requests of the core protocol.