Синхронное шифрование/дешифрование в C# с использованием TPM 2.0 (3DES, трипледы, TDES)

#c# #encryption #3des #tpm

Вопрос:

Я пытаюсь использовать TPM 2.0 в C# с Microsoft.Библиотека TSS для шифрования/дешифрования данных.

Доступ к TPM и получение некоторых случайных данных уже работает, но это была простая задача.

Вот код:

 using Tpm2Lib;

...

//
// Create the device according to the selected connection.
// 
Tpm2Device tpmDevice = new TbsDevice();

//
// Connect to the TPM device. This function actually establishes the
// connection.
// 
tpmDevice.Connect();

//
// Pass the device object used for communication to the TPM 2.0 object
// which provides the command interface.
// 
var tpm = new Tpm2(tpmDevice);

byte[] b = tpm.GetRandom(16);
textBox1.Text = BitConverter.ToString(b);

//
// Clean up.
// 
tpm.Dispose();
 

Я новичок в мире TPM и хочу добиться следующего:

  • Сохраните закрытый ключ 3DES один раз в TPM (чтобы его нельзя было прочитать).
  • Шифрование/дешифрование данных с помощью TPM

Мой первый вопрос: возможно ли это технически с помощью TPM?

После изучения различных статей от MS и других, я думаю, что это немного сложно, и различные образцы на github… не пролили на это свет.

Любая помощь будет признательна.

Комментарии:

1. Есть ли у вас какие-либо причины использовать устаревший алгоритм шифрования?

2. Я думаю, что вы пытаетесь использовать TPM не по прямому назначению

3. @JonasH Нет никаких причин, также был бы полезен пример AES.

4. @SergShevchenko Вы имеете в виду, что я не могу использовать TPM для прямого дешифрования/шифрования?

5. Я думал, вы хотите установить и сохранить закрытый ключ для TMP, я не думаю, что это возможно