Предположим, что у меня есть произвольные данные, которые необходимо защитить с помощью Windows TPM, а затем использовать сохраненные данные. Какой из приведенных ниже подходов является хорошим?
Создайте постоянный ключевой объект NCrypt (пустой контейнер). Сохраните произвольные байты данных как «свойство», используя NCryptSetProperty этого ключа. Завершите создание ключа, чтобы сохранить его в TPM. А позже извлеките его, используя ручку ключа. Насколько я понимаю, свойства на самом деле хранятся не внутри TPM, а в контейнере ключей Windows CNG (поставщик хранилища ключей) на диске. Правильно ли это?
Запечатанное шифрование TPM: шифруйте произвольные данные с помощью ключа, защищенного TPM, чтобы только TPM мог их расшифровать, поскольку это обеспечивает конфиденциальность и целостность. Позже расшифруйте зашифрованный большой объект, хранящийся на диске, чтобы получить данные.
Есть ли лучший подход? Я пытаюсь сделать это на C++, используя библиотеки Windows.
Предположим, что у меня есть произвольные данные, которые необходимо защитить с помощью Windows TPM, а затем использовать сохраненные данные. Какой из приведенных ниже подходов является хорошим? [list] [*]Создайте постоянный ключевой объект NCrypt (пустой контейнер). Сохраните произвольные байты данных как «свойство», используя NCryptSetProperty этого ключа. Завершите создание ключа, чтобы сохранить его в TPM. А позже извлеките его, используя ручку ключа. Насколько я понимаю, свойства на самом деле хранятся не внутри TPM, а в контейнере ключей Windows CNG (поставщик хранилища ключей) на диске. Правильно ли это?
[*]Запечатанное шифрование TPM: шифруйте произвольные данные с помощью ключа, защищенного TPM, чтобы только TPM мог их расшифровать, поскольку это обеспечивает конфиденциальность и целостность. Позже расшифруйте зашифрованный большой объект, хранящийся на диске, чтобы получить данные.
[/list] Есть ли лучший подход? Я пытаюсь сделать это на C++, используя библиотеки Windows.