XKMS (XML Key Management Specification) est une spécification de validation et d'enregistrement de clé publique utilisable de façon conjointe au signature XML et proposée notamment par Microsoft et Verisign au W3C.
Les objectifs principaux de XKMS (XML Key Management Specification) sont :
fournir un protocole de validation et d'enregistrement des clefs publiques entre les applications Web et les services Web.
éliminer le besoin pour une application de gérer la syntaxe et la sémantique complexes des PKI en utilisant un protocole simple formaté en XML en vue d'obtenir des informations sur une clé auprès d'un service XKMS ;
déplacer la complexité de l'application cliente au niveau de l'infrastructure, rendant ainsi l'application plus simple et petite.
XKMS est destiné à être implémenté en tant que service web permettant à un client d'accéder à des fonctions que l'on retrouve dans les standards des infrastructures à clés publiques (PKI).
La spécification XKMS est composée de deux protocoles :
X-KISS (XML Key Information Service Specification) pour les requêtes de localisation et de validation des clés publiques ;
X-KRSS (XML Key Registration Service Specification) pour enregistrer, renouveler, révoquer et obtenir des clés.
Ce protocole de XKMS gère le mécanisme de localisation et de validation des clés
La spécification XKISS définit les deux opérations suivantes :
Locate
localise le service pour obtenir des informations sur la clé publique correspondant à l'élément <ds:KeyInfo>. Cette opération n'est pas obligée de se prononcer sur la validité des données liées à la clé ; elle peut permettre de relayer la requête vers d'autres services ou se comporter comme passerelle vers une PKI.
Validate
non seulement elle recherche la clé publique correspondant à l'élément <ds:KeyInfo>, mais elle assure également que les informations liées à la clé retournées sont dignes de confiance.
Ce protocole de XKMS est liée au mécanisme d'enregistrement d'une
paire de clés auprès d'un fournisseur de services. Il existe deux
façons d'enregistrer des clés auprès d'un service XKMS :
le client génère une paire de clés et donne sa clé publique, avec d'autres informations au service d'enregistrement ;
le service XKMS génère la paire pour le client, enregistre la clé publique et envoie la clé privée au client. Le client peut aussi demander au service XKMS de garder la clé privée. La clé privée est conservée par le service au cas où le client la perdrait.
La spécification du service XKRSS définit quatre opérations :
Register
attache des informations à une clé avec un key binding. Soit le client donne sa clé publique accompagnée d'une preuve de la possession de la clé privée associée, soit le service génère la paire de clés pour le client. Le service peut demander davantage d'informations au client avant d'enregistrer la clé publique (et éventuellement la clé privée).
Reissue
un key binding enregistré est régénéré. De nouveaux credentials sont générés dans la PKI sous-jacente. Même s'il n'y a pas de durée de vie pour un key binding XKMS, les credentials générés par la PKI peuvent en avoir et doivent donc être régénérés périodiquement.
Revoke
cette opération permet à un client de détruire les objets de données attachés à une clé. Par exemple, un certificat X.509 attaché à une clé d'un service XKMS est détruit quand cette opération est appelée ;
Recover
cette opération permet à un client de recouvrer sa clé privée. Afin que cette opération soit possible, il faut que la clé privée ait été enregistrée par le service. L'une des façons pour le service d'obtenir cette clé est quand le service génère une paire de clés.
L'opération de recouvrement est très utile si la clé privée est utilisée pour chiffrer des données. Si elle est perdue, les données chiffrées deviennent inaccessibles et sont donc perdues. Dans ce cas, il est intéressant de générer la clé privée côté serveur et de la mémoriser.
Si la clé privée perdue servait uniquement à signer des documents, une nouvelle clé peut être générée sans influence sur la validité des documents signés existants. Ainsi, les clés utilisées dans cette optique peuvent être générées par le client en toute sécurité, et la clé privée ne devrait jamais être enregistrée par
le service.
Un service XKMS implémentant la spécification XKRSS peut choisir d'offrir certaines, toutes ou aucune de ces opérations. La spécification XKRSS n'oblige pas un service XKMS à implémenter l'une ou l'autre de ces opérations.