XML Key Management Specification (XKMS) Issues List

XKMS WG Chair(s):
Shivaram Mysore < shivaram.mysore@sun.com >
Stephen Farrell < stephen.farrell@cs.tcd.ie >
XKMS Editor:
Phillip Hallam-Baker < pbaker@verisign.com >
Issues List Maintainer(s):
Phillip Hallam-Baker < pbaker@verisign.com  >

This page enumerates outstanding issues on the XML Key Management Specification. The source of an issue need not be its first instance; it also might reference a cogent description or WG poll. Also, this document may not capture editorial tweaks and errors that were easily and quickly remedied.

This page will contain two tables.  Outstanding issues are recorded in the first table. They are typed as either Editorial (including typos and small clarifications), Clarification (where significant explanatory text is required) or Major.  In some cases, a volunteer has been identified, but in case not, then implementation of the proposed resolution is left to the specification editor(s).  Once an issue has been resolved (meaning that a resolution satisfactory to the group is agreed and has been included in the latest version of the specification), the issue is moved to the `Resolved Issues' table.  The issue index number is maintained to allow for consistent referencing.

New issues, and the resolution of issues should be reported to the XKMS mailing list. Before doing so, ensure that the issue is not already covered by an issue either in the "Outstanding Issues" table (in which case, a new issue need not be entered) or in the "Resolved Issues" table (in which case a new outstanding issue should be created, as opposed to moved from resolved to outstanding).  In addition, for newly discovered issues, the discoverer should identify an related issues that may already be cited in either table below.

Issues Raised During XKMS Specification Last Call

Outstanding Issues Last Call

# Source Issue Resolution
W3C XML Protocol
Editorial Fix for SOAP 1.2 Usage; Editorial fixes required for Part 2 of the spec.

Oasis DSS TC
Support for Delegated Signature in KeyUsage

Denis Pinkas - IETF/PKIX
Need to clarify what is an issue and what is not - see email

Carlie Adams
  1. 1. Section 2.6: Two Phase Request Protocol. As far as I can tell from the text, the purpose of the two phase protocol and the nonce is for the service to protect itself against Denial of Service attacks and against replay attacks. So why is it sensible to make the client trigger this by including "Represent" in the first request message? How does the client know that the service will want to do this?
    On p.15 it says that if the service requires use of the two phase protocol and the requester did not put "Represent" in the request, then the service is to return a MajorResult of "Receiver" and a MinorResult of "MustRepresent". This logic seems odd -- almost as if the service is returning an error for a badly-formed request (even though the requester can't have known beforehand that this was needed). It would be preferable, I think, to simply send the regular response with a MajorResult of "Represent"; if the requester can't deal with this, then *it* should send the error message.
  2. Section 3.3.1: Element . Related to the previous comment, I'll just note that if you want to keep the interchange the way it is currently specified then you need to add a MinorResult of "MustRepresent" to the second table in
  3. Section 3.3.2: Element . The last line of the first paragraph says, "This provides a cryptographic linkage between the request and the response." Note that it's only a "cryptographic linkage" if the response is signed or cryptographically protected in some other way. The conditions in the remainder of the section do not say this.
  4. Section 6.1.1: Example: Registration of Client-Generated Key Pair. In the element, there is no key identifier. How is the service supposed to know which key to use to verify this binding? Is it supposed to be implied from the elements in ? If so (or if there's some other way that the service is supposed to figure this out), shouldn't this be specified somewhere so that implementers know what to build?
  5. Section 6.1.2: Example: Registration of Service-Generated Key Pair. The third paragraph talks about encrypting the returned private key using a symmetric key derived from the authentication code and includes the following text: "as described in Appendix C.1.3". But Appendix C.1.3 does not describe this process in any way. What should be said is "as described in Section 8.1; see also Appendix C.1.3". [As an aside, was the key derivation algorithm in Section 8.1 created for the purposes of this specification? Are there not standard ones out there (e.g., in FIPS, ANSI, etc.) that could have been used instead?]

Joseph Reagle
Document doesn't flow as smoothly as it might:
  1. Section 1 says there are two "service specifications" but doesn't say where they are more fully described or specified. Forward references?
  2. The sections in section 1.7 do not correspond to the sections of the table of contents.
  3. Section 1.5 has the same title as Section 4 (except that it has "specification"). How to make this flow better, or at least use the term (r not) "specification" consistently.
  4. Generally, I don't distinguish between a "message format" and a "message syntax." What do these section do differently?

Roland Lockhart
I think there are 2 errors in the XKMS last call schema at http://www.w3.org/TR/2003/WD-xkms2-20030418/Schemas/xkms.xsd :
  1. The choice of inner results in CompoundResult should have a minOccurs attribute of 0, rather than defaulting to 1. The text at paragraph 77 of the XKMS spec part I indicates that there can be zero or more inner responses. This makes sense because a service which does not support compound requests will want to return an empty CompoundResult.
  2. The comment field just above the CompoundResult definition mistakenly refers to it as "CompoundResponse".

Aleksey Sanin
  1. As far as can see, there is no way to specify the desired key type (RSA/DSA/...) in <xkms:LocateRequest/> or <xkms:ValidateRequest/>. This is not a major problem because XKISS server may return a list of keys but I think that in most case the desired key type is known to the client and could be used to narrow key search on the server side (and reduce network traffic :) ). For example, I can easily imagine that RSA and DSA keys would be stored in different database tables. Key type may limit key search to one table instead of two.
  2. It does not seem that there is a way to use symmetric keys. While public key cryptography is became more and more afordable, there are still situations when symmetric key cryptography is usefull either because of performance, legacy or some other reasons. An use case example might be a couple of high traffic servers when one stores some sensitive data on the client in an encrypted format (say, in cookies) and another one decrypt this data. These two servers may use XKISS server as a central keys storage (for example, to provide keys rotation). Using symmetric keys might be desirable because of performance reasons as well as small encrypted data size.
  3. In the schema for <xkms:ValidityInreval/> element "NotBefore" and "NotAfter" attributes do not have "use=\"optional\"" specified. 3) The "maxOccurs=\"3\"" for <xkms:KeyUsage/> element may prevent schema extension in the future, I would suggest to change this to "maxOccurs=\"unbound\"".
  4. Interop Test suite available ??

Yasir Khan
Section 4.2.1 Example: Document Signature
The XKMS ValidateResponse is not correct according to the ValidateRequest
The ValidateRequest requires KeyName element to be present in ValidateResult, the ValidateResult has the ResultMajor = Success but only contains X509Certificate in KeyInfo, according to this example KeyName should be present in KeyInfo for ResultMajor = Success . This shows that ValidateResult is not composed successfully.

Yasir Khan
  1. In section 2.5.2 it is described:
    Service generation of the Pending Response Message RequestID is set to the value of Id in the Pending request message Nonce is not present ResponseID is set to a randomly generated unique value
  2. Corresponding example the values are not given correctly: In Response the value of RequestId should be "#I4294d3993de300c1ef54d49bd0903b2d" according to the specification.
  3. Clarify use of "#" before the Id values in XKMS Response

Shivaram Mysore
  1. Just before line 386, Appendix DReferences -- TYPO; Need Space in between D & References
  2. [CSP] TBD -- FILL-IN HERE !!
Protocol Binding Spec (Part 2):
  1. Just before line 75, [PKIX] TDB -- FILL-IN HERE !!
  2. [SPKI] TDB -- FILL-IN HERE !!
  3. also make items in [] bold to be consistent.
  4. line 80 will need a hard reference soon.
  5. just before line 84 another item [XML-ns] that needs to be in bold.

Resolved Issues Last Call

# Source Issue Resolution

Issues Raised in Candidate REC

# Source Issue Resolution

Last $Revision: 1.1 $ by $Author: sfarrell $ on $Date: 2003/08/08 13:05:10 $ GMT