XKMS

XKMS, sigla en inglés para XML Key Management Specification (Especificación XML para manejo de claves), usa el framework de servicios web para facilitar a los desarrolladores asegurar la comunicación entre sus aplicaciones utilizando la infraestructura de clave pública (PKI). XKMS es un protocolo desarrollado por el World Wide Web Consortium (W3C) que describe la distribución y registro de claves públicas. Además es compatible para su uso en conjunto con XML-SIG (Especificación XML de firma digital) y XML-Enc (Especficación XML de cifrado).

Arquitectura

XKMS consta de dos partes:

XKRSS - XML Key Registration Service Specification (Especificación XML de Servicio de registro de claves)
Especifica como se registrará, revocará y recuperará claves públicas. La generación de claves se puede realizar por el cliente o al momento del registro en el servidor.
XKISS - XML Key Information Service Specification (Especificación XML de Servicio de Información de claves)
Especifica como se obtienen y validan claves públicas.

En ambos casos el principal objetivo es delegar toda la complejidad de implementaciones tradicionales de PKI a un servidor externo permitiendo a un cliente interactuar con él.

Estructura

Suponemos que el cliente tiene su llave privada Private, posee una palabra clave Password y que recibió del servidor una clave auth para autenticación.

 Auth = HMAC-SHA1 (auth, 0x1)
 Pass = HMAC-SHA1 (HMAC-SHA1 (Password, 0x2), 0x3)

XKRSS

Registro y Revocación

Petición

Respuesta

XKISS

Para XKISS la sintaxís de las peticiones es de manera similar.

Obtención de clave
<Locate>
   <Query>
      <ds:KeyInfo>
         <ds:RetrievalMethod
           URI="http://www.PKeyDir.test/Certificates/01293122"
           Type="http://www.w3.org/2000/09/xmldsig#X509Data"/>
      </ds:KeyInfo>
   </Query>
   <Respond>
      <string>KeyName</string>
      <string>KeyValue</string>
   </Respond>
</Locate>
<LocateResult>
   <Result>Success</Result>
   <Answer>
      <ds:KeyInfo>
         <ds:KeyName>O=XMLTrustCernter.org OU="Crypto"
                        CN="Alice"</ds:KeyName>
         <ds:KeyValue>...</ds:KeyValue>
      </ds:KeyInfo>
   </Answer>
</LocateResult>
Validación
<Validate>
   <Query>
      <Status>Valid</Status>
      <ds:KeyInfo>
         <ds:KeyName>...</ds:KeyName>
         <ds:KeyValue>...</ds:KeyValue>
      </ds:KeyInfo>
   </Query>
   <Respond>
      <string>KeyName</string>
      <string>KeyValue</string>
   </Respond>
</Validate>
<ValidateResult>
   <Result>Success</Result>
   <Answer>
      <KeyBinding>
         <Status>Valid</Status>
         <KeyID>http://www.xmltrustcenter.org/assert/20010120-39</KeyID>
         <ds:KeyInfo>
            <ds:KeyName>...</ds:KeyName>
            <ds:KeyValue>...</ds:KeyValue>
         </ds:KeyInfo>
         <ValidityInterval>
            <NotBefore>2000-09-20T12:00:00</NotBefore>
            <NotAfter>2000-10-20T12:00:00</NotAfter>
         </ValidityInterval>
      </KeyBinding>
   </Answer>
</ValidateResult>

Características y ventajas

Véase también

Protocolo SOAP y definición WSDL para servicios web

Enlaces externos