セキュリティーの起点をハードウェアに置くことにより、既存のソフトウェアベースで行われてきたセキュリティーをより信頼性の高いものにすることが出来る機能です。
またブラックリスト方式ではなく、ホワイトリスト方式での信頼性を提供するものでもあります。
従来はソフトウェアベースでのセキュリティ対策が基本でした。
一般的にセキュリティーソフトはHDDに保存され、メインメモリとCPUから見れば、ただの一つのプログラムに過ぎません。ソフトウェアである以上、書き換えてしまう事が可能なのです。
そう、セキュリティソフト自体が改竄されてしまっては意味が無いものとなってしまいます。
ではセキュリティーソフトが改竄されていない事をチェックする機能を作ればよい。
この場合、どこに起点を置くかが重要になってきます。
セキュリティーソフトから遡り、ドライバ、OS、カーネル、ブートローダー、BIOS、これらは全てソフトウェアで作られています。という事は全て改竄が可能。
そこで考え出されたのがハードウェアを起点にする保護。
このチェック機構の起点の事をRoot of Trust for Measurement(RTM)といいます。
そしてハードウェアがこれらのソフトウェアを改竄されていない事を下層から順次チェック。
この、順次信頼性をチェックする流れをchain of trustといいます。
そしてインテル® トラステッド・エグゼキューション・テクノロジーでは
RTMをCPUの命令として実装しています。
大雑把にですがCPU命令≒CPUの回路ですので、作ってしまえば書き換える事はできません。
この「書き換えができない」という事が重要で信頼性を向上させる根拠となっています。
ブラックリストはみなさんご存知だと思います。
「危険」をリスト化したもので、ブラックリストと照合する事により危険なプログラムを検知します。
一般的なセキュリティーソフトは、このブラックリスト方式となっています。
ブラックリスト方式のデメリットは後手であること。
危険なプログラムが見つかってからリストに追加されるので、対策されるまで若干の遅延が発生してしまい、その間は無防備な状態となります。
ホワイトリスト方式は「安全」リスト化します。予め安全なものをリストに加え、そのリストのソフトウェアのみ起動することにより、より確実に安全にすることができ。そもそも対策までの遅延という概念がありません。
まずは改竄されていないソフトウェア状態を記憶しておくことから始まります。
次回起動時は、今から起動しようとしているソフトウェアと、記憶しておいたソフトウェアと比較することにより安全性を確認できます。
もう少し具体的に説明すると、改竄されていない状態のソフトウェアからハッシュ値を生成しそれを記憶しておきます。
チェックする機能はCPU命令としてハードウェアレベルで実装されているため改竄不可能と前述しましたが、暗号鍵を作る機能、ハッシュ値を計算する機能、これらの計算を行う場所、ハッシュ値を記憶しておく場所も改竄されないように保護する必要があります。
BIOSで記憶したり、メインメモリやCPUレジスタで計算していたのでは、ソフトウェアからアクセス可能であるため改竄可能です。
これらの機構を改竄されることのない専用のハードウェアで実装したものがTrusted Platform Module(TPM)といいます。
TPM上で改竄されていない状態のソフトウェア状態を予めホワイトリストに記憶しておく。
次回起動時以降は、ホワイトリストと起動しようとしているソフトウェアを比較することにより
安全にPCを起動する事ができます。
最後になりますが、どうやらDEPと同じ様なバッファオーバーフローの監視を行う機能も備わっているようです。
PCRの中身を確認
検証はいろいろと・・・
1.MBR(GPT)の改竄
2.ブートローダーの改竄
3.OSカーネルの改竄
4.ハイパーバイザの改竄
やってみたのですが、単純に「壊れてるよ!」と言われるか、普通に起動するかのどちらかで、TXTに改竄を検出させることはできませんでした。
クラッカーの素質はないが、クラッシャーの素質を持っていることが再確認できました。
ということでPlatform Configuration Register(PCR)の中身を覗いてみました。
ハッシュ値ですね。
PCR[10]は新しくソフトを起動する毎に更新されます。
ZIGSOWにログインするとコメントやこのアイテムを持っているユーザー全員に質問できます。