web-dev-qa-db-ja.com

WindowsおよびLinux上のTPM 2.0 PKCS#11

新しいSkylakeプロセッサーには、TPM 2.0が内蔵されています。

対称キーと非対称キーのTPM 2.0をWindowsおよびLinuxのPKCS#11トークンとして使用する方法はありますか?

TPM 1.2にはPKCS#11ライブラリがあり、TPM 2.0が新しいRSA鍵と証明書階層を使用するための類似のライブラリを探しています。

9
user1563721

-これはビットの古い質問ですが、うまくいく解決策を見つけることができました。

TPM 2.0チップにPKCS#11バックエンドを提供するモジュールが Github で利用可能です。

使用法:

  1. TPMキーを作成する

    • ハッシュアルゴリズムsha256とキーアルゴリズムrsaを使用して主キーを作成し、オブジェクトコンテキストをファイル(po.ctx)に保存します。

      tpm2_createprimary -H o -g sha256 -G rsa -C po.ctx
      
    • 次に、ハッシュアルゴリズムSHA256とキーアルゴリズムRSAを使用して、ファイル(po.ctx)から親オブジェクトと共にTPMにロードできるオブジェクトを作成し、公開キーと秘密キーをkey.pub|privに出力します。

      tpm2_create -c po.ctx -g sha256 -G rsa -u key.pub -r key.priv
      
    • 秘密キーと公開キーをTPMの一時メモリに読み込みます。

      tpm2_load -c po.ctx -u key.pub -r key.priv -C obj.ctx
      
    • 有効なハンドルを指定して、オブジェクトを永続化します。

      tpm2_evictcontrol -A o -c obj.ctx -H 0x81010010
      
    • これで、すべての一時ファイルを削除できます。

      rm key.name *.ctx
      
  2. TPM2-PK11をインストールし、config.sample~/.tpm2/configにコピーします。

  3. 証明書を作成します(例:Certtool(GnuTLS))。

  4. TPM2-PK11と作成されたTPMキーを使用するようにアプリケーションを構成します。

OpenSSHクライアント:

  • 構成ファイルを作成し、セットアップに合わせて変更します。

    cp config.sample ~/.tpm2/config
    
  • 公開鍵を抽出します。

    ssh-keygen -D libtpm2-pk11.so
    
  • TPMキーを使用します。

    ssh -I libtpm2-pk11.so ssh.example.com
    
  • または、PKCS#11モジュールを~/.ssh/configのssh構成に追加します。

    Host *
        PKCS11Provider libtpm2-pk11.so
    

Firefox:

  • PreferencesPrivacy & Securityに移動して、ボタンSecurity Devicesをクリックします。
  • [ロード]を押して、システムにインストールされているlibtpm2-pk11.soを選択します。
  • TPM2 PKCS11スロットを読み込んだ後、[デバイスマネージャー]にスロットが一覧表示され、[証明書]の下の[証明書の表示]を選択すると、証明書が一覧表示されます。
4
mike

代替のTPM2 PKCS#11実装は https://github.com/tpm2-software/tpm2-pkcs11 です。これはTCG(Trusted Computing Group)のTSS2(TPM2ソフトウェアスタック)の一部であり、「公式の」TPM2ソフトウェアであることが意図されています。そのため、おそらく古いtpm2-pk11ではなく、「使用するはずの」これを使用すると思います。実際、私はプレゼンテーションを見ました( https://events19.linuxfoundation.org/wp-content/uploads/2017/12/TPM-Software-Stack-2018-10-25-final_Peter-Huewe。 pdf )は、tpm2-pkcs11が「irtimmerによるPKCS#11 TPM2.0作業に基づく」であると述べています(スライド25)。

1
Stephen Warren