[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: FW: FW: [dss] OASIS DSS - SignatureObject on Input
OK lets get crunchy. You concede we need change, let's get down to
exactly what we have to change. Edward Shallow wrote: Decision 1: The notion of timestamping signatures which do not require verification, utilizing the Verify protocol with ReturnUpdatedSignature is dead. The Sign protocol, or better the Timestamp profile of the Sign protocol, can legitimately timestamp inbound signatures thus producing what is by definition a signature timestamp. This capability is not mentioned anywhere in either the core or Timestamp profile and must be added to the text of the core directly, or at a minimum mention it and refer off to the Timestamp Profile for details.-----Original Message----- From: Trevor Perrin [mailto:trevp@trevp.net] Sent: September 16, 2004 3:13 AM To: ed.shallow@rogers.com Subject: Re: FW: [dss] OASIS DSS - SignatureObject on Input At 05:30 PM 9/15/2004 -0400, ed.shallow@rogers.com wrote:Before we proceed , some background. I assumed we all agreed that ReturnUpdatedSignature on the Verify when in fact we are not even doing a Verify is too fundamentally inconsistent and is a semantic mortal sin. I also assumed that we had consensus on performing timestamps of existing signatures on the back of the Sign protocol. I'll send you the list links if you can't find them.I don't mind signing signatures. I mind digging a new trench in the protocol just for this. Signing a signature should be like signing anything else. Absolutely wrong. In the case of a request for a Timestamp, which by the way is on the Sign protocol, the timestamp (signature) IS the primary signature. In your own words ...Now on to the task of passing up the signature under this scenario, seebelow. Sure.-----Original Message----- From: Trevor Perrin [<mailto:trevp@trevp.net>mailto:trevp@trevp.net] Sent: September 15, 2004 11:21 AM To: <mailto:dss@lists.oasis-open.org>dss@lists.oasis-open.org Subject: RE: [dss] OASIS DSS - SignatureObject on Input At 12:27 AM 9/15/2004 -0400, Edward Shallow wrote:Trevor, As it applies to the "timestamp this CMS signature please" scenario, your suggestion works technically (although it is much messier for you and the protocol), but not semantically. Both the request and the response are just CMS/PKCS7 SignedData signatures. If one assumes that this is all driven by an AddTimestamp optional input and the SignatureType is RFC3161, then why would the client be sending in more than one signature/document ? Hence <SignaturePlacement> and <WhichDocument> are superfluous in the CMS scenario. For XMLSig everything is fine. However, the AddTimestamp optional input section could use some beefing up in the XMLSig area as well. Examples: If the AddTimestamp attribute specifies a content timestamp, then SignaturePlacement should be used; If the AddTimestamp attribute specifies a signature timestamp, then the timestamp will be placed in the same document as the signature, and SignaturePlacement should be be used to specify the exact placement (i.e. XpathAfter). This whole timestamp area should be clarified for bothCMS and XMLSig.So this does not get lost in the shuffle, will you be improving the text here ?I wasn't planning on it. With <AddTimestamp> the server sticks a time-stamp on the produced signature. The client can control the time-stamp only by specifying a "Type" URI (a profile could define URIs for content timestamps, signature timestamps, etc). In other words, optional inputs like <SignaturePlacement> don't control the time-stamp, they control the "primary" signature. "... In the Sign case, the server is treating the signature as just a data element to be signed..." Now the text is totally void on this subtlety because it is void on the whole subject of signature timestamp !!! When are you going to concede that the core doc needs fixing ? No I'm not. If I remember correctly all I asked was that you provide better support AND text for signatures on Sign (i.e. Timestamp) requests. Essentially, either add SignatureObject (preferred), or add text which officially legitimizes use of the Document w/ MimeType "application/pkcs7-signature" claiming it was always there, because it is not.You're proposing that the client can use optional inputs to control the time-stamp as well. You are not controlling multiple signatures. It is fundamnetally a simple sign whose scope is part of the incoming thing as you call it.Controlling multiple signatures in a single Request would get complicated, which is why we've specified only a minimal, simple form of it with <AddTimestamp>. Decision 2: DocumentWithSignature only addresses XML and must be generalized if you are advocating returning the timestamped signature this way. Additionally the text must reflect the rationale as to why this generalization exisits.In summary, I really see no down side in simply allowing an existing element (i.e. SignatureObject) to appear in a Sign request for semantic integrity. Your changes to <DocumentwithSignature> will start to make it look like <DocumentBase>, and THAT will really get confusing.I don't see why.Let's review the possible options for sending in a signature. 1) We could pass it in as an InputDocument which would require a specifc MimeType of "application/pkcs7-signature" on the Base64Data element of the current Document element. This would require no change atall. Sounds good to me.<SignaturePlacement> would not be required on a signature timestamp of this type, because there is only one place to put it.Normally, the server doesn't "put" the signature anywhere, it just returns it in the <SignatureObject>. For consistency's sake, it would be good to still use <SignaturePlacement> to signal "insert the time-stamp into this Input Document", and <DocumentWithSignature> to return the time-stamped Input Document (i.e. signature). Decision 3: Change DocumentWithSignature to be a subclass of Document so as to pick up the choices.2) Add SignatureObject as a valid optional input element as suggested.Like I've said, I'd prefer to handle to-be-signed signatures like any other to-be-signed element.Issue: The problem with current spec if that there isn't sufficient generalization of a base Document, or consistency across usage scnearios. We have documents, we have signatures, and we have documents with signatures, Documents can only be used on input, DocumentWithSignature can only be used on output, SignatureObject can only be used on output.Sounds fine to me. Except that currently <DocumentWithSignature> can only be XML, so we should extend it to contain the same things <Document> can. P.S. What I was suggesting earlier, is to simply collapse DocumentWithSignature and use Document. The flexibility of MimeType already supports your arbitrary separation of these 2 elements. Then you have a nice simple setup where your only dealing with Documents and Signatures. Due to all the optional choices and attributes of SignatureObject, I agree we should resist a more total collapse. The only down side is that you have the possibility of signatures in both constructs. But at least it is down to 2 instead of 3 possible vehicles. Either way you have change. I can buy this semantic distinction.If it is an enveloped signature, we call it a document. If it is a CMS signature being verified on a Verify call, we pass it up in a SignatureObject, even though it contains eContent. So passing a CMS signature up in a Verify call is good for you, but passing a CMS signature up to be timestamped on a Sign call is not? Where's the consistentcy.It's fine to pass it up to the server. But in the Verify case I would call it a Signature Object, and in the Sign case an Input Document. Do remember it is the primary signature under this interpretation. This was the motive in the first place of making Timestamp a profile of Sign.In the Verify case, the server is treating the signature *as* a signature, parsing and verifying it etc. In the Sign case, the server is treating the signature just as a data element to be signed, and to have the resultant signature potentially inserted into. This element happens to be a signature, but the server doesn't really deal with it as such. Decision 4: See above. I vote for a partial collapse eliminating DocumentWithSignature which is already handled admirably bu Document. In the real world a document is a document regardless of whether it is signed or not. The signature is in fact just an attribute (read MimeType) which qualifies the Document. It is not an entirely different thing. This is the beauty of advanced dialects like XML.Why didn't we consider using Document for all transport duties, in and out to simplify the above ?Then we'd have a protocol with no structure. If you agree with the above, then this is a non-issue.Do you have a good reason not to add it ?We already have a mechanism for telling the server what to sign (Input Documents) and suggesting the signature be inserted in one of them (SignaturePlacement). I'd rather not change the behavior of the Sign protocol so much that there's an alternate way of doing these things. I buy this.Thatseems messy, and a big change at this point.I wager that messiness has already slipped in. As we get into these use-cases, this is becoming evident. The text is in need of additional clarifying prose, unless of course we fix it.I consider this a special case because we're asking the server to insertthesignature into a particular type of thing. Decision 5: More than not mentioning it to me, you haven't included any text at all in the core covering this scenario and MimeType use. At least a sentence or 2 !!!What if I have to insert the signature into a different type of thing. Like a mortgage application?Whydon't we add a <MortgageApplication> element to the core so the client can pass in a mortgage application, and so on? My suggestion to extend <SignaturePlacement> would generalize to inserting a signature into anytypeof document, binary or not, whereas special-casing for input Signatures would not.Then why did you not suggest passing the signature up as an InputDocument with Document attributed as MimeType "application/pkcs7-signature" ?I did. Well, I didn't mention the MimeType. This is dead.Also, we had long discussions of how to do signature updating earlier,wherewe considered many options, such as adding a separate Update protocol, or adding this to Sign. We settled on Verify / UpdateSignature. Yes, itdoesan extra Verify, but at the time people were willing to live with that. I can changed this. The XAdES Profile may also have to change.This in fact has changed. If the Verify fails, the user doesn't get his timestamp when in fact they never wanted a Verify. I have already given you the use-case with the internal corporate PKI, and I believe the team agrees that ReturnUpdatedSignature on the back of a Verify doesn't cut it.So I had hoped we were done with the issue, in the core at least, though of course you can do whatever you want with your profile. If you spec out an optional input, though, it might help other otherpeopledecide whether they like this or not.Already done in the EPM Profile where SignatureObject is an optional input on a Sign. Just give us some text. (i.e. Decision 5)The team saw the inability to timestamp a signature (w/o a Verify that is), and had me post this question. Either allow SignatureObject as a valid vehicle for a CMS signature on input, as it currently is supported on the Verify, or bless use of signatures in InputDocument where Document MimeType attribute can be "application/pkcs7-signature", which is a valid MimeType.consider it blessed. I don't know why it would be prohibited. I can live with this semantic generality. You like "Input" adjectives, I like generalization because I like simplicity.I really thought I'd be breaking less rules by asking for SignatureObject as valid Sign input, than encouraging use of signatures masqueraded as base64Data in InputDocument.I don't think they're masquerading as base64Data in an Input Document. They *are* base64 data in an Input Document. All I have managed to do is point out the inconsistencies of the current delivery elements (i.e. Document, SignatureObject, and DocumentWithSignature). There has not been a change to the core since the June Committee Draft. I had not heard that is was frozen. Is this the case? cooling, at least... I'm glad we're getting feedback from profilers / implementers, though.. that's the best kind. Clarifications, fixes, cleanups, etc. based on experience are desperately needed... I just hope we can integrate them without drastic changes or new features. Trevor |
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]