XKMS

XKMS (англ. XML Key Management Specification — спецификация управления ключами в XML) использует фреймворк веб-сервисов для упрощения обеспечения защищённой передачи данных между приложениями с помощью инфраструктуры открытых ключей (PKI). XKMS — это протокол, разработанный Консорциумом Всемирной паутины (W3C), который описывает распространение и регистрацию открытых ключей[1].

Архитектура

XKMS состоит из двух частей:

XKRSS — XML Key Registration Service Specification (XML-спецификация службы регистрации ключей)
определяет, как происходит регистрация, отзыв и восстановление открытых ключей. Генерация ключей может осуществляться как на стороне клиента, так и на сервере во время регистрации.
XKISS — XML Key Information Service Specification (XML-спецификация службы информации о ключах)
определяет процессы получения и проверки открытых ключей.

В обоих случаях основная цель — вынести всю сложность традиционных реализаций PKI на внешний сервер, позволяя клиенту работать с ним простыми запросами.

Структура

Допустим, клиент обладает своим закрытым ключом Private, знает секретное слово Password и получил от сервера отдельный ключ auth для аутентификации.

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

XKRSS

Регистрация и отзыв ключа

Запрос

  • Register (начальная метка)
    • Prototype
      • Status (состояние ключа: при регистрации отправляется «Valid», при отзыве — «Invalid»)
      • KeyID
      • ds:KeyInfo
        • ds:KeyValue (публичный ключ; не указывается, если на сервере выполняется генерация)
        • ds:KeyName
      • ValidInterval (интервал действия ключа)
        • NotBefore
        • NotAfter
      • PassPhrase (Pass)
    • AuthInfo
      • AuthUserInfo
        • ProofOfPossession (доказательство владения ключами; не указывается, если генерация на сервере)
          • ds:Signature (подпись Prototype приватным ключом)
        • KeyBindingAuth (аутентификация в сервисе)
          • ds:Signature (хэш Prototype с Auth в качестве ключа)
    • Respond (список меток KeyInfo, которые нужно получить в ответе)
      • string (имя метки; при генерации ключа на сервере для получения зашифрованного приватного ключа нужно указать метку «Private» с шифрованием по ключу Auth)

Ответ

  • RegisterResult (начальная метка)
    • Answer
      • Status (состояние ключа)
      • KeyID
      • ds:KeyInfo (содержит метки, указанные в запросе)
    • Private (только если была запрошена при серверной генерации ключа)

XKISS

Для XKISS синтаксис запросов аналогичен.

Получение ключа
  • Запрос
<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>
Валидация ключа
  • Запрос
<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>

Особенности и преимущества

  • Простота реализации клиентской части.
  • Открытый стандарт (разработан совместно W3C и IETF)
  • Совместимость не только с PKI, но и с PGP, SPKI и другими технологиями.

Примечания

  1. Entrust Resources: Standards: XKMS (XML Key Management Specification) (англ.). web.archive.org. Дата обращения: 5 ноября 2025.

Ссылки