新しいSkylakeプロセッサーには、TPM 2.0が内蔵されています。
対称キーと非対称キーのTPM 2.0をWindowsおよびLinuxのPKCS#11トークンとして使用する方法はありますか?
TPM 1.2にはPKCS#11ライブラリがあり、TPM 2.0が新しいRSA鍵と証明書階層を使用するための類似のライブラリを探しています。
-これはビットの古い質問ですが、うまくいく解決策を見つけることができました。
TPM 2.0チップにPKCS#11バックエンドを提供するモジュールが Github で利用可能です。
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
TPM2-PK11をインストールし、config.sample
を~/.tpm2/config
にコピーします。
証明書を作成します(例:Certtool(GnuTLS))。
TPM2-PK11と作成されたTPMキーを使用するようにアプリケーションを構成します。
構成ファイルを作成し、セットアップに合わせて変更します。
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
Preferences
、Privacy & Security
に移動して、ボタンSecurity Devices
をクリックします。libtpm2-pk11.so
を選択します。代替の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)。