可以这样说,我在Powershell中创建了一个自签名证书:

New-SelfSignedCertificate -Provider "Microsoft Platform Crypto Provider" -Subject "CN=foobar" -KeyExportPolicy NonExportable -KeyAlgorithm RSA  -KeyLength 2048 -CertStoreLocation "Cert:\CurrentUser\My" -NotAfter $((Get-Date).AddYears(10))

证书的预期用途是Powershell脚本的代码签名。

由于提供者是MS platform crypto provider,因此密钥将由嵌入在我主板中的Trusted Platform Module(TPM)芯片生成。

因此,私钥现在存储在“黑盒” TPM中。那么,是否需要包装/密码保护私钥?

最佳答案

TPM创建的任何密钥已经被包装,可以通过以下方式进行包装:

  • TPM 1.2的存储根密钥,或
  • 指示为TPM 2的主键的主键之一

  • 因此,在创建密钥时,该密钥由根密钥之一包装,并且您无需执行任何特殊操作即可使它发生。实际上,您不能使它不发生。

    TPM规范保证根密钥本身不会离开TPM。如果要保证新生成的密钥也不会离开TPM,请使其不可迁移。

    此外,您还可以使上述任何键受密码保护。是否执行此操作取决于您的特定要求。但是请记住,TPM规范并不专注于防御物理攻击,因此,如果您无法物理访问计算机,则可能会认为它已受到威胁。

    关于powershell - TPM和私钥保护,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53906783/

    10-11 07:48