Як виправити tpm2_ptool tpm:parameter(2):curve not supported

Проблема

Ви намагаєтеся створити ключ за допомогою tpm2_ptool, використовуючи таку команду:

fix_tpm2_ptool.sh
tpm2_ptool addkey --label=ssh --userpin=zeigh6iraewich1aengip6Dee2bait --algorithm=ecc384

і отримуєте помилку tpm:parameter(2):curve not supported:

tpm2_ptool_curve_not_supported.txt
Traceback (most recent call last):
  File "/usr/bin/tpm2_ptool", line 33, in <module>
    sys.exit(load_entry_point('tpm2-pkcs11-tools==1.33.7', 'console_scripts', 'tpm2_ptool')())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/tpm2_pkcs11/tpm2_ptool.py", line 26, in main
    commandlet.init('A tool for manipulating the tpm2-pkcs11 database')
  File "/usr/lib/python3/dist-packages/tpm2_pkcs11/command.py", line 102, in init
    commandlet.get()[d['which']](d)
  File "/usr/lib/python3/dist-packages/tpm2_pkcs11/commandlets_keys.py", line 295, in __call__
    objects = super(AddKeyCommand, self).__call__(args)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/tpm2_pkcs11/commandlets_keys.py", line 202, in __call__
    tertiarypriv, tertiarypub, tertiarypubdata = self.new_key_create(
                                                 ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/tpm2_pkcs11/commandlets_keys.py", line 289, in new_key_create
    tertiarypriv, tertiarypub, tertiarypubdata = tpm2.create(
                                                 ^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/tpm2_pkcs11/tpm2.py", line 226, in create
    raise RuntimeError("Could not execute tpm2_create: %s" %
RuntimeError: Could not execute tpm2_create: b'WARNING:esys:src/tss2-esys/api/Esys_Create.c:399:Esys_Create_Finish() Received TPM Error \nERROR:esys:src/tss2-esys/api/Esys_Create.c:134:Esys_Create() Esys Finish ErrorCode (0x000002e6) \nERROR: Esys_Create(0x2E6) - tpm:parameter(2):curve not supported\nERROR: Unable to run tpm2_create\n'

Рішення

Ваша конкретна реалізація TPM не підтримує криву, яку ви намагаєтеся використати. Ви можете дізнатися, які (еліптичні) криві підтримуються:

Хоча tpm2_ptool підтримує такі криві:

  • ecc224
  • ecc256
  • ecc384
  • ecc521

ваша реалізація TPM (або фізичний TPM, або програмний TPM) може підтримувати не всі з них.

Зазвичай, якщо ваш TPM не підтримує, наприклад, криву 384 bit, він також не підтримуватиме жодної кривої з більшою кількістю бітів. Тому я рекомендую спробувати наступну меншу криву.

try_ecc256.sh
tpm2_ptool addkey --label=ssh --userpin=zeigh6iraewich1aengip6Dee2bait --algorithm=ecc256

Згідно з Dell, TPM-сумісні з TPM 2.0 повинні підтримувати принаймні ecc256.

Продовжуйте спробувати менші криві, поки не знайдете ту, що працює. Найкращий спосіб дізнатися, які криві підтримуються — спробувати їх усі; пошук документації зазвичай займає набагато більше часу і часто взагалі не дає результатів.


Дивіться схожі статті за категоріями: Криптографія