Using OpenPTS with Fedora15

Fedora15ではOpenPTSがパッケージでインストールできます。PTSとはPlatform Trust Serviceの略で、TPMを使ったリモートアテステーションをサポートするコンポーネントです。OpenPTSのいまのVersionは0.2.4で、TPM搭載PC上でリモートアテステーションの簡単なデモ(スタンドアローンモード)が出来ます。ただ、設定が少し面倒なので、下記にスタンドアローンモードの設定方法を紹介しておきます。PTSは検証対象のPCで動くコレクターと、検証側のPCで動くベリファイヤーの2つがあります。この例では、同じマシンで動かしてみます。


SELinuxをPermissiveモードにしておく


まだ、MACポリシー問題がいくつかあるので、SELinuxをPermissiveモードにしておきます。/etc/selinux/config を修正して、再起動しておきます。

SELINUX=permissive


OpenPTSをパッケージで導入する

# yum install openpts


TSSの設定変更


OpenPTSはTSS経由でTPMやイベントログにアクセスします。そのためTSS(trousers)の設定が必要です。ひとまずBIOSのイベントログにアクセスしてPCRの0から7をOpenPTSでリモートアテステーション(遠隔検証)するために /etc/tcsd.conf に下記の2行を追加します。

firmware_log_file = /sys/kernel/security/tpm0/binary_bios_measurements
firmware_pcrs = 0,1,2,3,4,5,6,7

設定を有効にするためにTSSデーモンを再起動します。

# service tcsd restart

イベントログにアクセスできるか確認します。OpenPTS付属の iml2txt をつかいます。

$ iml2text

 Idx PCR       Type    Digest                                EventData
-----------------------------------------------------------------------
  0   0 0x00000008 298df125b260ef64201bdf0815c003873eedd50e [BIOS:EV_S_CRTM_VERSION]
  1   0 0x80000008 dc55cd66314dbf857a690d0f83a060217b437253 [BIOS:EV_EFI_PLATFORM_FIRMWARE_BLOB,base=0xffc80000,len=0x180000]
  2   0 0x80000008 70f1d130521acdc1cfbd473c29dc057b9181c41c [BIOS:EV_EFI_PLATFORM_FIRMWARE_BLOB,base=0xffe00000,len=0x100000]
  3   0 0x00000004 9069ca78e7450a285173431b3e52c5c25299e473 [BIOS:EV_SEPARATOR, 00000000]

上記のように、BIOSのイベントログ(起動時からのBIOSの記録)がみえれば、TSSの設定はうまくいっています。


TPMのオーナーシップを取得


TPMにはオーナーをSRKと呼ばれるRSA鍵にパスワードが設定できますが、ここではーy -z オプションを使い標準値(ゼロを20バイト)を設定しておきます。

$ tpm_takeownership -y -z


PTSコレクターを初期化


Rootで、PTSコレクターを初期化します。

# ptsc -i
Sign key  location          : SYSTEM
Generate uuid               : 96af7a74-aef8-11e0-bf76-e41f13c04e38
Generate UUID (for RM)      : 96d4c536-aef8-11e0-bf76-e41f13c04e38
level 0 Reference Manifest  : /var/lib/openpts//96d4c536-aef8-11e0-bf76-e41f13c04e38/rm0.xml

ptsc is successfully initialized!

このPCのBIOSを検証するためのマニフェストが生成されます。次に、正しく検証できるか、セルフテストしてみます。

# ptsc -t
selftest - OK

これで、PTSコレクターが正しく構成されました。


PTSベリファイヤーを初期化


スタンドアローンモードを使うためには、
PTSコレクターの動くマシン上にでグループptscに所属するアカウントが必要です。

usermod -G ptsc yourname

PTSコレクターとPTSベリファイヤーはSSHを使いデータのやりとりを行います。そのため、SSHの公開鍵認証を設定しておきます。

$ ssh-keygen -t rsa
$ ssh-copy-id yourname@localhost

次に、PTSのエンロールメントを行います。はじめてopenptsコマンドを使う場合、HOME/.openpts の作成を尋ねるので"Y"で作成を選んでください。

$ openpts -i localhost
Target            : localhost
Collector UUID    : 96af7a74-aef8-11e0-bf76-e41f13c04e38
Manifest UUID     : 96d4c536-aef8-11e0-bf76-e41f13c04e38
manifest[0]       : /home/yourname/.openpts/96af7a74-aef8-11e0-bf76-e41f13c04e38//96d4c536-aef8-11e0-bf76-e41f13c04e38/rm0.xml
configuration     : /home/yourname/.openpts/96af7a74-aef8-11e0-bf76-e41f13c04e38/target.conf
validation policy : /home/yourname/.openpts/96af7a74-aef8-11e0-bf76-e41f13c04e38/policy.conf

PTSコレクターが作成したマニフェストがベリファイヤーにコピーされ、検証でつかうPOLICYも生成されます。


PTSベリファイヤーを使ってリモートアテステーション

$ openpts localhost
Target            : localhost
Collector UUID    : 96af7a74-aef8-11e0-bf76-e41f13c04e38 (date: 2011-07-15-15:39:12)
Manifest UUID     : 96d4c536-aef8-11e0-bf76-e41f13c04e38 (date: 2011-07-15-15:39:12)
username(ssh)     : default
port(ssh)         : default
policy file       : /home/yourname/.openpts/96af7a74-aef8-11e0-bf76-e41f13c04e38/policy.conf
property file     : /home/yourname/.openpts/96af7a74-aef8-11e0-bf76-e41f13c04e38/vr.properties
integrity         : valid

これで無事正しいBIOSが起動していることが確認できました。openptsコマンドは複数のコレクターを管理できるので、例えば、クラウドにある大量の仮想マシンの状況を管理が可能です。


問題解決


この例で最後まですんなり設定できた人は、実はかなりラッキーな方です。うまくいかない場合は、openpts-jpusers@lists.sourceforge.jp までご連絡ください。

その他、OpenPTSはBIOSの検証モデルを使ってマニフェストを生成します。
IBMLenovoPanasonic 等のPCはモデルを検証済みですが、それ以外のPCや新しいマシンでは検証モデルが対応していない場合があります。


IBMのSystemXの方は /etc/ptsc.conf の設定でTPMのDA Lockのリセットを有効にしてください

tpm.resetdalock=on

これはTPMの問題なので、Winbond(いはま社名が変わりNuvoton)のTPMの場合はこの設定が必要かもしれません。TPMのベンダー及びバーションは下記のようにして確認できます。

$ tpm_version
 TPM 1.2 Version Info:
 Chip Version:        1.2.2.60
 Spec Level:          2
 Errata Revision:     1
 TPM Vendor ID:       WEC
 TPM Version:         01010000
 Manufacturer Info:   57454300


Lenovo Thinkpad X1


BIOSUEFIベースで新しくなったため、コレクターの初期が失敗します。 そろそろリリースのOpenPTS v0.2.5で対応予定です。