Encryption TPM支持的证书,备选方案

Encryption TPM支持的证书,备选方案,encryption,backup,x509certificate,data-protection,tpm,Encryption,Backup,X509certificate,Data Protection,Tpm,我可以制作一个本地自签名证书,如下所示。我用它来加密。没有密码 需要,因为私钥存储在TPM中。证书的私钥无法通过设计导出 $cert = New-SelfSignedCertificate -Provider "Microsoft Platform Crypto Provider" -Subject "CN=LTrust CA" -type DocumentEncryptionCert -KeyUsage KeyEncipherment,DataEnc

我可以制作一个本地自签名证书,如下所示。我用它来加密。没有密码 需要,因为私钥存储在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
以及:

但是当证书由于某种原因丢失时,我无法再检索加密数据。 因此需要一个备份。但在设计上这是不可能的,因为私钥不可用于导出

我发现了这篇关于这个主题的文章:

它说:

警告:您无法从TPM导出此密钥。曾经如果您丢失了电脑,或者TPM意外重置(如果您使用多个操作系统并意外尝试同时使用这两个操作系统,或者如果您机器上的BIOS重置,则可能会发生这种情况),您将丢失密钥。确保您有另一种方式访问以这种方式保护的任何内容


那么,如何确保在TPM重置或消失的情况下对我的数据进行解密?

您不能。这就是警告的意思。TPM是一种低端产品。真正的HSM具有将密钥备份到其他HSM实例的机制。这使HSM制造商感到高兴,因为您购买了更多的HSM。请注意,如果您仅将密钥对用于签名,或者如果您将解密的邮件存档,那么这一问题就不会那么严重。您应该仔细查看Bitlocker作为使用TPM密封加密密钥的示例加密系统。重要的事实是,您不使用TPM密钥来解密数据,而是用于解密主密钥。因此,可以使用TPM密钥对主密钥进行加密存储,此外,还可以使用其他密钥(例如,密码衍生密钥)对其进行加密。“那么您有两种方法可以访问主密钥。@罗伯特。谢谢你的建议。这可能是一个答案@Polk TPM还具有将密钥备份到其他TPM的机制,例如
TPM\u CC\u Duplicate
。这就是警告的意思。TPM是一种低端产品。真正的HSM具有将密钥备份到其他HSM实例的机制。这使HSM制造商感到高兴,因为您购买了更多的HSM。请注意,如果您仅将密钥对用于签名,或者如果您将解密的邮件存档,那么这一问题就不会那么严重。您应该仔细查看Bitlocker作为使用TPM密封加密密钥的示例加密系统。重要的事实是,您不使用TPM密钥来解密数据,而是用于解密主密钥。因此,可以使用TPM密钥对主密钥进行加密存储,此外,还可以使用其他密钥(例如,密码衍生密钥)对其进行加密。“那么您有两种方法可以访问主密钥。@罗伯特。谢谢你的建议。这可能是一个答案@Polk TPM还具有将密钥备份到其他TPM的机制,例如
TPM\u CC\u Duplicate
Unprotect-CmsMessage -Content $e #Decrypt