Trusted Platform Module
Trusted Platform Module (TPM) はセキュアな暗号プロセッサの国際規格です。暗号鍵をデバイスに統合することによりハードウェアを保護する専用のマイクロプロセッサとして設計されています。
実際に TPM を Secure Boot や Key Storage など様々なセキュリティアプリケーションで使うことができます。
当然ながら TPM が使えるのは TPM ハードウェアに対応しているデバイスだけです。あなたのハードウェアは TPM をサポートしているのに認識されない場合、BIOS の設定で TPM を有効にする必要があります。
バージョン
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 を扱っています。
ドライバー
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 フロントエンド。
- openssl_tpm_engine — TSS API と対話する OpenSSL エンジン。
- tpm_keyring2 — TPM ベースの eCryptfs 鍵を管理するキーマネージャ。
- http://sourceforge.net/projects/trousers || tpm_keyring2AUR[リンク切れ: アーカイブ: aur-mirror]
- opencryptoki — Linux の PKCS#11 実装。IBM の暗号ハードウェアを使用するためのドライバーやライブラリ、テスト用のソフトウェアトークンが含まれています。
基本
まずは基本的なバージョン情報を確認してください:
$ 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