GnuTLS (tpmtools) api для подписи данных в TPM

Недавно я начал работать с TPM (версия 1.2), и после проверки официального API GnuTLS мне было интересно, какие функции API являются правильными для выполнения всех криптографических материалов внутри чипа (сертификаты знака получают ключи pk + и т. Д.). ,

В настоящий момент Im способен получить эти данные за пределами TPM, поэтому я могу подписать или получить закрытый ключ в моем коде C, но это не то, что я хочу.

Поблагодарить всех!

Всего 1 ответ


Последовательность событий выглядит примерно так:

  1. gnutls_tpm_key_list_get_url чтобы получить список ключей TPM.
  2. Выберите ключ, из которого вы хотите подписаться, и импортируйте его с помощью gnutls_privkey_import_tpm_url .
  3. Теперь у вас есть объект gnutls_privkey_t вы можете использовать с абстрактным API, как и любой другой ключ. В вашем случае вы, вероятно, захотите использовать gnutls_privkey_sign_data или одну из аналогичных функций подписи.

Имейте в виду, что переход с этим подходом ограничивает вас до TPM 1.2. Из документов GnuTLS :

Обратите внимание, что мы рекомендуем не использовать TPM с этим API, потому что он ограничен TPM 1.2. Мы рекомендуем вместо этого использовать оболочки PKCS # 11 для TPM, такие как CHAPS14 или opencryptoki15. Это позволит использовать стандартные функции смарт-карты и HSM (см. Смарт-карты и HSM) для ключей TPM.


Есть идеи?

10000