Я пытаюсь сохранить небольшое количество данных в TPM2 в течение циклов питания.Так что эта маленькая строка будет привязана только к одной конкретной машине.Вот что у меня работает.
# put data in file that is to be sealed
echo "my sealed data" > seal.dat
# create a primary key
tpm2_createprimary -c primary.ctx
# create a child key in public and private parts
tpm2_create -C primary.ctx -u obj.pub -r obj.priv
# create a sealed object
tpm2_create -C primary.ctx -i seal.dat -u obj.pub -r obj.priv
# load the private and public portions into the TPM
tpm2_load -C primary.ctx -u obj.pub -r obj.priv -c key.ctx
# unseal the data
tpm2_unseal -c key.ctx
Но после цикла питания, если я ввожу: 'tpm2_unseal -c key.ctx', я получаю следующую ошибку:
ПРЕДУПРЕЖДЕНИЕ:esys: src / tss2-esys / api / Esys_ContextLoad.c: 279: Esys_ContextLoad_Finish () Получена ошибка TPM. ОШИБКА: esys: src / tss2-esys / api / Esys_ContextLoad.c: 93: ошибка Esys_ContextLox для Esys_ContextLoad: Esys_ContextLoad (0x1DF) - tpm: параметр (1): сбой проверки целостности ОШИБКА: неверная авторизация дескриптора элемента ОШИБКА: невозможно запустить tpm2_unseal
Я использую tpm_server (эмулятор), если это имеет какое-либо значение.
Так каков наилучший способ загрузить небольшую строку в tpm2 и обеспечить постоянную потерю мощности?