Запечатывание данных с помощью TPM в Windows

Я хочу выполнить операцию печати TPM в Windows. Я знаком с программированием на C++, но понятия не имею, какие библиотеки я бы даже использовал.

В настоящее время я застрял со следующими двумя вопросами:

Могу ли я выполнить это действие, используя, например, WMI и сценарий powershell? Этот http://msdn.microsoft.com/en-us/library/windows/desktop/aa446799%28v=vs.85%29.aspx указывает, что я могу использовать TBS для отправки команды, но у меня нет ни малейшего представления о том, как бы я настройте параметры, например. WMI.

Можно ли использовать tbs.h/tbs.lib из Windows 7 SDK для выполнения операции TPM_Seal?

Есть ли API TSS, например http://trousers.sourceforge.net/, где я могу вызвать это из какого-нибудь C++? Код?

Метод, с помощью которого я это делаю, не имеет большого значения, но я использую TPM 1.2 в Windows, и все мои клиенты — это Windows.


person Yablargo    schedule 10.06.2014    source источник
comment
Этот msdn.microsoft.com/ en-us/library/windows/desktop/ выглядит так, как я бы назвал, но я не знаю, как будет выглядеть мой командный буфер.   -  person Yablargo    schedule 12.06.2014
comment
Вау, теперь ваш вопрос совсем в другом....   -  person Scolytus    schedule 13.06.2014
comment
Я действительно немного растерялся, когда сначала спросил. Я смутно знал, что я должен делать, но имел мало деталей реализации. Вы были полезны. На прошлой неделе я смог выполнить несколько основных команд TBS и чувствую, что теперь я НАМНОГО ближе к цели.   -  person Yablargo    schedule 16.06.2014


Ответы (2)


Для отправка команд в TPM. Поэтому вам нужно собрать команды самостоятельно.

Команды, структуры и потоки TPM определены в 3 документах:

Сначала вам нужно выяснить, какую команду вы хотите отправить. Затем вам нужно найти ссылку на команду в части 3 и собрать необходимые структуры, как описано в части 2.

Например, команда TPM_seal определена в разделе 10.1 на стр. 72 части 3. В строке 1331 показано, как должна выглядеть команда. После выполнения команды вы можете оценить возвращенную структуру в соответствии со строкой 1332. (Все номера относятся к ревизии 116.)

Это может быть очень сложно. Тем не менее, вы можете взглянуть на другие реализации. Если вам нужно всего несколько команд, это не так уж сложно, особенно когда вы можете быть уверены, что некоторые крайние случаи не случаются.

Я бы посоветовал вам начать изучать программный TPM IBM. Этот проект также предоставляет libtpm и некоторые утилиты. Это одна из самых легких реализаций, которые я знаю.

Вы также можете проверить, достаточно ли стабилен TrouSerS для Windows, чтобы соответствовать вашему потребности. Там у вас будет высокоуровневый TSS API.

Если вы можете использовать Java, взгляните на jTSS. Он поддерживает Windows.

person Scolytus    schedule 11.06.2014
comment
Привет. Я загрузил окно Windows 8 и просматривал список команд для базовых служб TPM. Мне действительно нужно только защитить симметричный ключ. Я вижу, что могу это сделать, и мне даже не нужно использовать C#. Если я смогу сделать это в powershell и т. д., это действительно все, что мне нужно. Я собираюсь переформулировать свой вопрос, чтобы вырезать жир и попытаться добраться до сути проблемы. - person Yablargo; 11.06.2014
comment
Спасибо за информацию о программном обеспечении TPM. Моя основная машина для разработки на самом деле не имеет TPM, поэтому я использовал вспомогательный блок. - person Yablargo; 16.06.2014

Я смог сделать это без особых проблем с JTSS. Пример @ https://security.stackexchange.com/questions/60841/encrypting-a-симметричный-key-or-small-file-using-tpm-and-windows-tbs

person Yablargo    schedule 18.06.2014