Trusted Platform Module

提供: ArchWiki
2021年7月21日 (水) 11:11時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (→‎ドライバー: == Using TPM 1.2 ==の下に移動)
ナビゲーションに移動 検索に移動

Trusted Platform Module (TPM) はセキュアな暗号プロセッサの国際規格です。暗号鍵をデバイスに統合することによりハードウェアを保護する専用のマイクロプロセッサとして設計されています。

実際に TPM を Secure Boot や Key Storage など様々なセキュリティアプリケーションで使うことができます。

当然ながら TPM が使えるのは TPM ハードウェアに対応しているデバイスだけです。あなたのハードウェアは TPM をサポートしているのに認識されない場合、BIOS の設定で TPM を有効にする必要があります。

バージョン

ノート: TPM 2.0 のサポートは不完全です (カーネルとユーザー空間の両方)。現時点では TPM2 を動作させる方法は見つかっていません。

TPM 2.0 が搭載されたシステムで tcsd を実行すると以下のようになります:

# cat /sys/class/tpm/tpm0/device/description 
TPM 2.0 Device
# tcsd -f
TCSD TDDL ioctl: (25) Inappropriate ioctl for device
TCSD TDDL Falling back to Read/Write device support.
TCSD TCS ERROR: TCS GetCapability failed with result = 0x1e

この記事では主に TPM 1.2 を扱っています。

Using TPM 1.2

ドライバー

TPM ドライバーは新しいカーネルならネイティブで含まれていますが、ロードする必要があります:

# modprobe tpm

さらに、使用しているチップセットにあわせて、以下のモジュールのどれかをロードしてください:

# modprobe tpm_{atmel,bios,infineon,nsc,tis,crb}

使用方法

TPM は tcsd によって管理します。Trusted Computing リソースを管理するユーザー空間のデーモンで、(TSS の仕様によれば) TPM デバイスドライバーの唯一の表玄関です。tcsd は AUR パッケージの trousersAUR に含まれています。IBM によって開発・リリースされており、/etc/tcsd.conf で設定することが可能です。

tcsd を起動して出力を監視するには、次を実行:

# tcsd -f

もしくは tcsd.service を起動・有効化してください。

tcsd を実行したら、tpm-toolsAUR もインストールすると良いでしょう。TPM を管理するためのコマンドラインツールが多数入っています。

他の便利なツール:

  • tpmmanager — tpm-tools の Qt フロントエンド。
https://sourceforge.net/projects/tpmmanager || tpmmanagerAUR
  • openssl_tpm_engine — TSS API と対話する OpenSSL エンジン。
https://sourceforge.net/projects/trousers || openssl_tpm_engineAUR[リンク切れ: アーカイブ: aur-mirror]
  • tpm_keyring2 — TPM ベースの eCryptfs 鍵を管理するキーマネージャ。
https://sourceforge.net/projects/trousers || tpm_keyring2AUR[リンク切れ: アーカイブ: aur-mirror]
  • opencryptoki — Linux の PKCS#11 実装。IBM の暗号ハードウェアを使用するためのドライバーやライブラリ、テスト用のソフトウェアトークンが含まれています。
https://sourceforge.net/projects/opencryptoki || opencryptokiAUR

基本

まずは基本的なバージョン情報を確認してください:

$ tpm_version

そしてセルフテストを実行:

$ tpm_selftest -l info
 TPM Test Results: 00000000 ...
 tpm_selftest succeeded

SSH 鍵のセキュア化

TPM を使って鍵を保護する方法は複数存在しますが、以下では simple-tpm-pk11-gitAUR を使用する簡単な方法を説明します。

まず、新しいディレクトリを作成して鍵を生成してください:

$ mkdir ~/.simple-tpm-pk11
$ stpm-keygen -o ~/.simple-tpm-pk11/my.key

鍵を設定:

~/.simple-tpm-pk11/config
key my.key

SSH を設定して適切な PKCS11 プロバイダを使用する:

~/.ssh/config
Host *
    PKCS11Provider /usr/lib/libsimple-tpm-pk11.so

これで PKCS11 プロバイダで鍵を生成することができます:

$ ssh-keygen -D /usr/lib/libsimple-tpm-pk11.so
ノート: 上記の方法では複数の鍵を生成・使用することはできません。

トラブルシューティング

tcsd.service が起動しない

パーミッションの問題が原因で tcsd.service サービスが起動できないのかもしれません [1]。以下のコマンドで解決できる可能性があります:

# chown tss:tss /dev/tpm*
# chown -R tss:tss /var/lib/tpm

参照