Hi
Bruce,
I agree that
it is essential to get normative protection for KMIP users. I am not suggesting
for us to exclude the Credential structure. I just want to make sure that we
fully understand the implication of including your proposed text and realize
that this approach differs from what we previously agreed on. I also want to
make sure that the documents are consistent.
Please see below for the changes I am proposing to
the Client Authenticity section
(3.1.3) in the Profiles spec, your proposed text, and the
Authentication section in the Usage Guide (3.1). If anyone disagrees
or would like to rewrite this, please chime in.
Regards,
Indra
Profiles
spec:
3.1 3 Client
Authenticity
Client
authenticity is proven by the use of channel (SSL/TLS) level mutual
authentication. Vendors MAY use the Credential object for passing additional
identification information. This SHOULD NOT, however, be used as an alternative
authentication mechanism to the chosen authentication set.
If
the Credential object is specified in the
request
and the identity of the requestor is provided in both the Credential
object
and during the channel level authentication, the KMIP server SHALL
verify that the identities are the same.
If
they differ, the authentication fails and the server
SHALL return an error.
The actual mechanics of how the server ensures
client authenticity is beyond the scope of this version of the
specification.
The text
proposed by Bruce (slightly modified):
3.1.4
Relationship between credential and object
creator
KMIP objects have a creator. The KMIP server SHALL
interpret determine
the identity of the requestor from the
cCredentials object as the
identity of the requestor if such a Credential is specified in the
requestspecified during the
authentication process. The
authentication mechanism SHALL be one of the chosen authentication
suites as specified in this Profiles specification. If a Credential object is not specified, KMIP SHALL use the
certificate passed in the channel binding (or some unique value derived from the
certificate or its components) as the identity of the requestor.
For those KMIP requests that result in new managed
objects this identity SHALL be used as the creator of the managed object.
For those operations that only access pre-existent managed objects, this
identity SHALL be checked against the creator, and access SHALL be controlled as
detailed in section 3.13 of [KMIP].
Paragraph from
Section 3.1 of the Usage Guide
KMIP implementations that use other vendor-specific mechanisms for
authentication may use the Credential attribute to include additional
identification information. For example, in addition to
performing mutual authentication during SSL/TLS, the client passes the
Credential object in the request. If the client provides the username
of the requestor in both the client certificate
and the Credential object, the server verifies that the usernames are the same.
If they differ, the authentication fails and the server returns an error. If the
username is only specified in the Credential object, the server interprets the
identity of the requestor from the Credential object. However, if this authentication option is not part of the chosen
KMIP authentication suite, it should not be used to assert that an identity has
been authenticated or be used as an alternative to the chosen KMIP
authentication suite.
From: Bruce Rich [mailto:]
Sent: Friday, October 16, 2009 3:45 AM
To: Fitzgerald,
Indra
Cc:
Subject: RE: [kmip]
Additional clarity around KMIP object owner
Indra,
I believe that specifying the protection
that KMIP servers will offer their users is important enough to specify in
normative text. That said, the focus of KMIP v1 is mainly on the protocol
for information exchange, not the set of allowable mechanisms for protecting
such information in transit, nor the identity proof mechanisms between
endpoints. The challenge is to find a mechanism for protection and proof
that offers adequate safeguards, yet leaves some maneuvering room to allow
multiple possible usecases. The troika of mutual channel authentication
via SSL/TLS, a Credential structure in the request header and an operational
policy name promise made by the server is the set of things that must work
together to codify the protection that KMIP servers will offer their users.
I think that in the absence of a Credential structure in the request (and
the concomitant usage of the peer certificate from the channel binding),
if the KMIP server says that the OperationalPolicyName for an object that it
created/registered is "default", then the KMIP user has a decent understanding
of the protections that will be provided. The rub comes when the KMIP user
chooses to also pass a Credential structure on the request. As you point
out, the Usage Guide would suggest a relationship between the certificate on the
binding to the credential on the request somehow, perhaps to further constrain
the certificate usage. I believe the presence of a credential in the
request should open up a new set of usecases, not further constrain things (just
as an OperationalPolicyName other than "default" opens up new possibilities).
My change was to clearly define a mechanism to allow the KMIP user to
constrain KMIP server behavior (by omitting the Credential). The language
used had the effect of also loosening it on the other hand (if the KMIP user
chooses a credential not related to that supplied on channel binding). My
main focus was on getting normative protection for KMIP users. At the time
I proposed the text, I did not realize that the Usage Guide had language that
spoke so clearly in the opposite direction, so now we will have to work this
out. Unfortunately, I will only be intermittently connected over the next
week and a half, so I will not be able to be very responsive.
Bruce A Rich
brich at-sign us dot ibm dot
com
From:
"Fitzgerald, Indra"
<>
To:
Bruce Rich/Austin/IBM@IBMUS,
"" <>
Date:
10/15/2009 04:15 PM
Subject:
RE: [kmip] Additional clarity around KMIP
object owner
Bruce and all,
In the Usage Guide, we currently address
the case where clients may include the Credential attribute as additional
identification information. We explicitly point out that if the Credential
attribute is not part of the chosen authentication suite, the Credential
attribute cannot be used to assert that an identity has been
authenticated.
Similarly, the profiles spec explicitly
points out that the Credential object may be used to pass additional
identification information. This should not, however, be used as an alternative
authentication mechanism.
Bruce's proposal allows the Credential
object to be used to interpret the identity of the requestor. If a Credential
object is not specified the certificate shall be used as the identity of the
requestor.
There appears to be a disconnect. We
cannot use the Credential object as the primary source for interpreting the
identity of the requestor, if the Credential object is not part of the
authentication suite. The authentication process will determine and authenticate
the identity of the requestor. Decoupling the authentication and identity
interpretation process could potentially weaken the security of the
authentication process and restrict certain use-cases. For example, clients may
provide the username inside the certificate and provide additional
identification information inside the credential object. According to Bruce's
proposal, the identity specified inside the certificate will not be acknowledged
if the credential object contains a different username.
To resolve this, we need to explicitly
allow the Credential object to be used during the authentication of the
requestor. Depending on the server's configuration, this may or may not be
required by the server. If both the certificate and Credential object contain
the identity of the requestor, the server shall verify that they are the same.
If they differ, the authentication fails and the server shall return an
error.
We also need to update the KMIP docs (i.e.
the profiles spec and Usage Guide) to make sure that they are consistent.
Regards,
Indra
From: Bruce Rich [mailto:]
Sent: Wednesday, October 14, 2009 6:02 PM
To:
Subject: Fw: [kmip] Additional clarity
around KMIP object owner
It's been pointed out that the spec uses the term "creator" rather
than "owner" (thanks, Steve and Marko), so better text might be:
3.1.4
Relationship between credential and object creator
KMIP objects have a creator. The
KMIP server SHALL interpret the Credential object as the identity of the
requestor if such a Credential is specified in the request. If a
Credential object is not specified, KMIP SHALL use the certificate passed in the
channel binding (or some unique value derived from the certificate or its
components) as the identity of the requestor. For those KMIP requests that
result in new managed objects this identity SHALL be used as the creator of the
managed object. For those operations that only access pre-existent managed
objects, this identity SHALL be checked against the creator, and access SHALL be
controlled as detailed in section 3.13 of [KMIP].
And I'll refrain from talking the
"creator endowed with certain unalienable rights...", but I really wanted to
slip that in there somewhere.
Bruce A Rich
brich at-sign us dot ibm dot
com
----- Forwarded by Bruce Rich/Austin/IBM on 10/14/2009 07:52 PM
-----
From:
Bruce
Rich/Austin/IBM@IBMUS
To:
Date:
10/14/2009 12:51 PM
Subject:
[kmip] Additional clarity around KMIP
object owner
Although we've
clarified KMIP client/server authentication in the KMIP Profiles document, I
think the concept of "owner of KMIP object" needs to be tied a bit more tightly
to the authentication.
I propose this language be added as section 3.1.4 in the Profiles
doc:
3.1.4
Object Ownership
KMIP objects have an owner. The KMIP server
SHALL interpret the Credential object as the identity of the requestor if such a
Credential is specified in the request. If a Credential object is not
specified, KMIP SHALL use the certificate passed in the channel binding (or some
unique value derived from the certificate or its components) as the identity of
the requestor. For those KMIP requests that result in new managed objects
this identity SHALL be used as the owner of the managed object. For those
operations that only access pre-existent managed objects, this identity SHALL be
checked against the owner, and access SHALL be controlled as detailed in section
3.13 of [KMIP].
Bruce A Rich
brich at-sign us dot ibm dot com