Сгенерировать дочерний элемент для jwt из открытого ключа ключа подписи

#c# #encryption #jwt

#c# #шифрование #jwt

Вопрос:

Учитывая:

  • ключ подписи, сгенерированный RSACryptoServiceProvider.
  • требование для создания подписанного jwt с дочерним файлом.

Если бы ключ подписи был из сертификата x509, то я бы установил дочернему элементу значение x5t. В данном случае это не так. Я мог бы придумать что-нибудь произвольное для дочернего элемента, но было бы лучше, если бы столкновения были маловероятны и чтобы существовала значимая связь между дочерним элементом и сертификатом.

То, что я намереваюсь, это: —

  1. Создайте массив байтов, который создается путем добавления байтов модуля к байтам экспоненты.
  2. SHA256 кодирует массив.
  3. Base64 — SHA256.
  4. установите дочерний элемент в строку base64.

В значительной степени это:

 var kid = Base64(SHA256(concat(exp,mod)))
  

Кажется ли это допустимым подходом? Есть ли более простой способ получить отпечаток пальца от RSASecurityKey ?

Ответ №1:

Как правило, идентификатор ключа для других протоколов состоит из хэша (обычно SHA-1) по модулю. Модуль должен быть уникальным для пары ключей и, следовательно, для открытого и закрытого ключей. Его преимущество в том, что он может быть вычислен из закрытого и открытого ключей, при этом он полезен для идентификации любого из них.

Модуль должен быть закодирован в целое число без знака в конце, используя минимальное количество байтов.

Комментарии:

1. Отлично, спасибо. Всего пара уточнений, которые вы, возможно, можете добавить к ответу: «идентификатор ключа для других протоколов» — что подразумевается под «другими протоколами»? Кроме того, можете ли вы сослаться на какие-либо документы, описывающие предоставленный вами подход (я не смог найти ни одного)? В противном случае, если в ближайшие несколько часов не произойдет каких-либо изменений, я отмечу это как принятый ответ.

2. PKCS # 11 обычно использует это. Мне нужно было бы проверить, является ли это просто обычным использованием или это было определено таким образом … завтра.