TPM и защита закрытого ключа - PullRequest
0 голосов
/ 23 декабря 2018

Допустим, я создаю самоподписанный сертификат в 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, ключи будут генерироваться микросхемой доверенного платформенного модуля (TPM), встроенной в мою материнскую плату.

Таким образом, закрытый ключ теперь хранится в TPM «черного ящика».Так есть ли необходимость обернуть / защитить паролем закрытый ключ?

1 Ответ

0 голосов
/ 24 декабря 2018

Любой ключ, созданный доверенным платформенным модулем, уже упакован:

  • Корневой ключ хранилища для TPM 1.2 или
  • Один из первичных ключей, указанных в качестве родительского ключадля TPM 2

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

Сами корневые ключи гарантированы спецификацией TPM никогда не покидать TPM.Если вы хотите гарантировать, что ваш новый сгенерированный ключ никогда не покинет TPM, сделайте его немигрируемым.

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

...