コンピュータシステムの信頼できるコンピューティングベース(TCB )とは、セキュリティにとって重要なすべてのハードウェア、ファームウェア、および/またはソフトウェアコンポーネントの集合体であり、TCB内部で発生するバグや脆弱性がシステム全体のセキュリティ特性を危険にさらす可能性があることを意味します。対照的に、TCBの外部にあるコンピュータシステムの部分は、システムのセキュリティポリシーに従って付与された権限以上の権限を漏洩させるような不正な動作をしてはならないのです。
システムの信頼できるコンピューティング基盤(TCB)を慎重に設計・実装することは、システム全体のセキュリティにとって極めて重要です。最新のオペレーティングシステムは、TCBのサイズを縮小することで、コードベースの徹底的な検査(手動またはコンピュータ支援によるソフトウェア監査やプログラム検証など)を可能にするよう努めています。
この用語は、オペレーティングシステムカーネルと信頼できるプロセスの組み合わせとして定義したジョン・ラシュビー[ 1 ]に遡ります。後者は、システムのアクセス制御ルールに違反することが許可されているプロセスを指します。古典的な論文「分散システムにおける認証:理論と実践」[ 2 ]の中で、ランプソンらはコンピュータシステムのTCBを単純に次のように定義しています。
どちらの定義も明確で便利ではあるものの、理論的に正確ではなく、また正確であることを意図したものでもありません。例えば、UNIXライクなオペレーティングシステム上のネットワークサーバープロセスがセキュリティ侵害の被害に遭い、システムのセキュリティの重要な部分を侵害する可能性があるにもかかわらず、オペレーティングシステムのTCBの一部ではないからです。そのため、もう一つの古典的なコンピュータセキュリティ文献であるオレンジブック[ 3 ]は、コンピュータシステムのTCBのより正式な定義を提供しています。
言い換えれば、トラステッド・コンピューティング・ベース(TCB)とは、セキュリティポリシーを適用するための信頼できる基盤を形成するために連携して動作するハードウェア、ソフトウェア、および制御の組み合わせのことです。
オレンジブックはさらに次のように説明しています。
つまり、特定のハードウェアまたはソフトウェアが TCB の一部となるのは、それがコンピュータ システムにセキュリティを提供するメカニズムの一部となるように設計されている場合に限ります。オペレーティングシステムでは、これは通常、カーネル (またはマイクロカーネル) と選択されたシステム ユーティリティ (たとえば、 UNIX システムのsetuidプログラムとデーモン) で構成されます。JavaやEのようにセキュリティ機能が組み込まれたプログラミング言語では、TCB は言語ランタイムと標準ライブラリで構成されます。[ 4 ]
セキュリティカーネルという用語は、コンピュータセキュリティの文献で参照モニタの概念の実装を指すために使用されています。これは、主体とオブジェクト間のアクセスを仲介するハードウェアおよびソフトウェアのメカニズムであり、改ざん耐性があり、常に呼び出され、分析可能なほど小さい必要があります。[ 5 ]オレンジブックでは、セキュリティカーネルは、参照検証メカニズムを実装する他の方法と並んで、信頼できるコンピューティングベースの可能な形態の1つとして扱われています。[ 3 ]
上記のオレンジブックの定義の結果として、TCBの境界は、セキュリティポリシーがどのように具体化されるかという具体的な内容に大きく依存します。上記のネットワークサーバーの例では、例えばマルチユーザーアプリケーションを提供するWebサーバーはオペレーティングシステムのTCBの一部ではありませんが、ユーザーが互いのIDや権限を乗っ取ることができないようにアクセス制御を実行する責任があります。この意味で、WebサーバーはUNIXサーバー、ユーザーのブラウザ、 Webアプリケーションを含むより大きなコンピュータシステムのTCBの一部であることは間違いありません。言い換えれば、例えばバッファオーバーフローによってWebサーバーに侵入することは、オペレーティングシステム自体の侵害とはみなされないかもしれませんが、Webアプリケーションに対する深刻な攻撃であることは間違いありません。
TCBの境界のこの根本的な相対性は、共通基準セキュリティプロセスにおける「評価対象」(TOE)の概念によって例示されます。共通基準セキュリティ評価の過程で、最初に決定しなければならないことの1つは、精査の対象となるシステムコンポーネントのリストという観点から、監査の境界を定めることです。
設計の一部として信頼できるコンピューティング基盤を持たないシステムは、それ自体でセキュリティを提供することはありません。外部手段によってセキュリティが提供される限りにおいてのみ安全です(たとえば、ネットワーク接続のない施錠された部屋にあるコンピュータは、実行されるソフトウェアに関係なく、ポリシーによっては安全とみなされる場合があります)。これは、David J. Farberらが述べたように、[ 6 ]コンピュータ システムでは、下位層の整合性は通常、上位層によって公理として扱われるためです。コンピュータ セキュリティに関しては、コンピュータ システムのセキュリティ特性について推論するには、コンピュータができること、そしてより重要なことに、できないことについて健全な仮定を立てることができなければなりません。しかし、他に考えるべき理由がない限り、コンピュータは一般的なフォン ノイマン マシンができることはすべて実行できます。これには明らかに、秘密にしておくべき電子メールやパスワードを漏洩するなど、最も単純なセキュリティ ポリシー以外には反すると考えられる操作が含まれます。しかし、システムのアーキテクチャに特別な規定がない限り、コンピュータがこれらの望ましくないタスクを実行するようにプログラムされる可能性は否定できない。
特定の種類のアクションの実行を防止することを目的としたこれらの特別な規定は、本質的にトラステッドコンピューティング基盤を構成します。このため、オレンジブック( 2007年時点でもセキュアなオペレーティングシステムの設計に関する参考書)は、)は、主にTCBの構造とセキュリティ機能の観点から定義されるさまざまなセキュリティ保証レベルを特徴付けています。
前述のオレンジブックで概説されているように、信頼できるコンピューティング基盤のソフトウェア部分は、効果を発揮するためには改ざんから自身を保護する必要があります。これは、現代のほぼすべてのコンピュータに実装されているフォン・ノイマン型アーキテクチャに起因します。機械語は他の種類のデータと同様に処理できるため、どのプログラムでも読み取ったり上書きしたりすることが可能になります。これを防ぐには、特別なメモリ管理規定を設ける必要があり、その規定はTCBの一部として扱われなければなりません。具体的には、信頼できるコンピューティング基盤は、少なくとも自身のソフトウェアへの書き込みを防止する必要があります。
多くの最新のCPUでは、TCBを格納するメモリの保護は、メモリ管理ユニット(MMU)と呼ばれる専用ハードウェアを追加することで実現されています。MMUは、オペレーティングシステムによってプログラム可能で、実行中のプログラムがシステムメモリの特定の範囲にアクセスできるようにしたり、アクセスを拒否したりできます。もちろん、オペレーティングシステムは、他のプログラムに対してこのようなプログラミングを許可しないようにすることもできます。この手法はスーパーバイザモードと呼ばれ、より粗雑なアプローチ(TCBをROMに格納したり、ハーバードアーキテクチャを使用したりすることなど)と比較すると、セキュリティ上重要なソフトウェアを現場でアップグレードできるという利点があります。ただし、トラステッドコンピューティングベースの安全なアップグレードを可能にすることは、それ自体のブートストラップの問題を引き起こします。[ 7 ]
前述のとおり、コンピュータシステムのセキュリティを確認する上で進歩するためには、信頼できるコンピューティング基盤への信頼が不可欠です。言い換えれば、信頼できるコンピューティング基盤は、信頼に値するという意味ではなく、まず第一に信頼されなければならないという意味で「信頼されている」のです。実際のオペレーティングシステムでは、セキュリティ上重大なバグが日常的に発見されており、これはそのような信頼の実際的な限界を示しています。[ 8 ]
代替手段は形式的ソフトウェア検証であり、これは数学的証明技術を使用してバグがないことを示します。NICTAとそのスピンアウトであるOpen Kernel Labsの研究者は最近、 L4マイクロカーネルファミリーのメンバーであるseL4の形式的検証を実施し、カーネルのC実装の機能的正しさを証明しました。[ 9 ] これにより、数学的証明に誤りがないと仮定すれば、seL4は信頼と信頼性の間のギャップを埋める最初のオペレーティングシステムカーネルとなります。
前述のように、形式検証や手動レビューなどの高コストな手法を適用する必要があるため、TCB のサイズは、TCB 保証プロセスの経済性、および結果として得られる製品の信頼性 (検証またはレビュー中に発見されなかったバグの数の数学的期待値の観点から) に直接的な影響を及ぼします。したがって、コストとセキュリティリスクを削減するために、TCB はできるだけ小さく保つ必要があります。これは、マイクロカーネルをモノリシックカーネルよりも優先する議論における重要な論点です。[ 10 ]
AIXは、インストール時のパッケージ管理システムにおいて、信頼できるコンピューティング基盤をオプションのコンポーネントとして具体化している。[ 11 ]