Пытался писать и читать свои собственные ключи из TPM (AES 256), используя C# с .NET 4.8
После начала тестирования моего кода я заметил, что определение пробела после нескольких ( в частности 5) успешная запись в исключении NvSpace.
Я хотел бы знать, есть ли какие-либо известные ограничения на запись пользователем в TPM.
соответствующий код (при условии, что у меня есть обработчик, представляющий свободное пространство)
public static void LoadKeyToTPM(byte[] key, uint nvIndexHandle)
{
Tpm2Device tpmDevice = new TbsDevice();
tpmDevice.Connect();
// Create a TPM context
Tpm2 tpm = new Tpm2(tpmDevice);
// Check if an available NV space handle was found
if (nvIndexHandle != 0)
{
// Define NV public area with the necessary attributes
NvPublic nvPublic = new NvPublic(
new TpmHandle(nvIndexHandle), // NV Index handle
TpmAlgId.Sha256, // Name algorithm
NvAttr.Authwrite | NvAttr.Authread, // NV attributes
ComputeHMAC(secretKey), // Authorization policy
512 // Data size
);
TpmHandle ownerAuth = new TpmHandle(TpmRh.Owner);
// Define the NV space, crushes here after 5 successful attemps
tpm.NvDefineSpace(ownerAuth, ComputeHMAC(secretKey), nvPublic);
// Write data to NV memory
WriteNV(tpm, nvIndexHandle, key, secretKey);
}
else
{
Console.WriteLine("No available NV space found.");
}
}
Решения, которые я пробовал:
Пиши в разных частях пространства NV (не в последовательных слотах)
Решения, которые я пробовал:
Пиши в разных частях пространства NV (не в последовательных слотах)
Решения, которые я пробовал:
Пишите в разных частях пространства NV (не в последовательных слотах)
Решения, которые я пробовал:
Пишите в разных частях пространства NV (не в последовательных слотах)
Решения, которые я пробовал:
Пишите в разных частях пространства NV (не в последовательных слотах)
Решения, которые я пробовал:
li>
Напишите в разных сеансах, чтобы узнать, есть ли какое-то ограничение по времени.
Запишите один и тот же ключ снова и снова и даже случайную строку, чтобы убедиться, что проблема не в записываются данные.
Определяйте больше места, чем необходимо, при каждой попытке определения.
Проверка производителя на наличие некоторых типов ограничений на использование пространства или слота
li>
Пытался писать и читать свои собственные ключи из TPM (AES 256), используя C# с .NET 4.8 После начала тестирования моего кода я заметил, что определение пробела после нескольких ( в частности 5) успешная запись в исключении NvSpace. Я хотел бы знать, есть ли какие-либо известные ограничения на запись пользователем в TPM. соответствующий код (при условии, что у меня есть обработчик, представляющий свободное пространство) [code]public static void LoadKeyToTPM(byte[] key, uint nvIndexHandle) { Tpm2Device tpmDevice = new TbsDevice(); tpmDevice.Connect(); // Create a TPM context Tpm2 tpm = new Tpm2(tpmDevice); // Check if an available NV space handle was found if (nvIndexHandle != 0) { // Define NV public area with the necessary attributes NvPublic nvPublic = new NvPublic( new TpmHandle(nvIndexHandle), // NV Index handle TpmAlgId.Sha256, // Name algorithm NvAttr.Authwrite | NvAttr.Authread, // NV attributes ComputeHMAC(secretKey), // Authorization policy 512 // Data size );
TpmHandle ownerAuth = new TpmHandle(TpmRh.Owner);
// Define the NV space, crushes here after 5 successful attemps tpm.NvDefineSpace(ownerAuth, ComputeHMAC(secretKey), nvPublic);
// Write data to NV memory WriteNV(tpm, nvIndexHandle, key, secretKey); } else { Console.WriteLine("No available NV space found."); } } [/code] Решения, которые я пробовал: [list] [*]Пиши в разных частях пространства NV (не в последовательных слотах) Решения, которые я пробовал:
Пиши в разных частях пространства NV (не в последовательных слотах) Решения, которые я пробовал:
Пишите в разных частях пространства NV (не в последовательных слотах) Решения, которые я пробовал:
Пишите в разных частях пространства NV (не в последовательных слотах) Решения, которые я пробовал:
Пишите в разных частях пространства NV (не в последовательных слотах) Решения, которые я пробовал:
li> Напишите в разных сеансах, чтобы узнать, есть ли какое-то ограничение по времени. [*]Запишите один и тот же ключ снова и снова и даже случайную строку, чтобы убедиться, что проблема не в записываются данные. [*]Определяйте больше места, чем необходимо, при каждой попытке определения. [*]Проверка производителя на наличие некоторых типов ограничений на использование пространства или слота li> [/list]