Сертификат с поддержкой TPM, альтернатива - PullRequest
1 голос
/ 13 июля 2020

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

  $cert = New-SelfSignedCertificate -Provider "Microsoft Platform Crypto Provider" -Subject "CN=LTrust CA" -type DocumentEncryptionCert -KeyUsage KeyEncipherment,DataEncipherment,KeyAgreement -KeyExportPolicy NonExportable -KeyAlgorithm RSA -KeyLength 2048 -CertStoreLocation "Cert:\CurrentUser\My" -NotAfter $((Get-Date).AddYears(10))

Теперь я могу

$e = "1234" | Protect-CmsMessage -To $cert.Thumbprint  #Encrypt

И:

Unprotect-CmsMessage -Content $e #Decrypt

Но когда сертификат по какой-то причине потеряна, я больше не могу получить зашифрованные данные. Так что нужна резервная копия. Но по замыслу это невозможно, потому что закрытый ключ недоступен для экспорта.

Я нашел эту статью на эту тему: Создание сертификатов с поддержкой TPM на Windows

Он говорит:

Предупреждение: вы не можете экспортировать этот ключ из TPM. Когда-либо. Если вы потеряете свой P C или если TPM случайно сбрасывается (это может произойти, если вы используете несколько операционных систем и случайно попытаетесь использовать его с обеими, или если B IOS на вашем компьютере сброшен), вы потеряете ключ. Убедитесь, что у вас есть альтернативный способ доступа ко всему, что вы защищаете таким образом.

Итак, как обеспечить расшифровку моих данных в случае сброса или исчезновения TPM?

...