Получить постоянную строку в модуле TPM2 и из него - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь сохранить небольшое количество данных в 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 и обеспечить постоянную потерю мощности?

1 Ответ

0 голосов
/ 21 сентября 2019

Запечатывание объекта ничего не хранит в памяти NV TPM.Он шифрует данные с помощью ключа, который доступен только для TPM, но сохраняется в двух файлах в вашей файловой системе - в TPM ничего не сохраняется.

Чтобы сохранить некоторые данные в памяти TPM, выопределил бы индекс памяти и затем сохранил бы его, например:

tpm2_nvdefine -Q $nv_test_index -C o -s 32 -a "ownerread|policywrite|ownerwrite"
echo "please123abc" > nv.test_w
tpm2_nvwrite -Q $nv_test_index -C o -i nv.test_w

И затем считал данные обратно:

tpm2_nvread -Q $nv_test_index -C o -s 32 -o 0

(пример кода из tpm2-toolsтестовый скрипт )

...