Как реализовать «ключ» платформенной лицензии с TPM в Linux?

Меня попросили реализовать то, что составляет лицензионный ключ с использованием TPM для устройства x86_64, имеющего микросхему TPM. По сути, желательно обеспечить, чтобы программное обеспечение, выпущенное для устройства, могло работать только на самом устройстве, так что если программное обеспечение будет перенесено на виртуальную машину или другое оборудование, оно откажется работать.

Я не ожидаю, что решение будет устойчивым к обратному проектированию, а скорее будет типичным решением типа «ключ», которое будет мешать обычным пользователям и сохранять честность корпоративных клиентов.

Я успешно построил и включил модули TPM, а также TrouSerS и код openssl-tpm-engine - я могу успешно стать владельцем TPM, но кроме этого доступная документация не полностью покрывает этот вариант использования - или, если это так, мне пока не удалось найти простое английское решение.

Я бы предпочел, если возможно, полагаться на секретную природу закрытых ключей, хранящихся в TPM, а не использовать хэши компонентов платформы (жесткий диск может умереть, ЦП может быть заменен и т. Д. Я бы предпочел ошибаться на стороне клиента, чтобы система не стала непригодной для использования после планового обновления оборудования.

Кроме того, в идеале я подозреваю, что это решение может быть спроектировано так, чтобы при производстве собирались открытые ключи каждого устройства и добавлен в цепочку ключей для подписи, чтобы программное обеспечение могло быть подписано с использованием одного ключа, который каждое устройство могло хранить в TPM, вместо того, чтобы требовать, чтобы программное обеспечение было подписано несколько раз? Я могу ошибаться здесь, но должен быть какой-то массовый метод соответствия методу аутентификации платформы, в противном случае его было бы очень сложно масштабировать.

5
задан Charles 2 February 2012 в 19:33
поделиться